Ich brauche irgendwelche Informationen zu erhalten, eine Maschine zu identifizieren und was ich bisher wurde mit wurde der folgende:Sicherste Weise Prozessor-ID oder eine Hardware-Informationen zu erhalten
internal static string GetProcessorId()
{
try
{
StringBuilder sb = new StringBuilder();
using (System.Management.ManagementClass theClass = new System.Management.ManagementClass("Win32_Processor"))
{
using (System.Management.ManagementObjectCollection theCollectionOfResults = theClass.GetInstances())
{
foreach (System.Management.ManagementObject currentResult in theCollectionOfResults)
{
sb.Append(currentResult["ProcessorID"].ToString());
}
}
}
return sb.ToString();
}
catch (Exception exception)
{
Console.WriteLine(exception.Message);
return "";
}
}
Aber wenn ich laufe dies auf Windows XP (von einer virtuellen Maschine) ist meine currentResult["ProcessorID"]
null
. Ich bin mir nicht sicher, ob es weil ich eine virtuelle Maschine benutze, aber es könnte sein, weil XP ist. Jedenfalls vertraue ich diesem Code nicht sehr. Ist es sicher genug? Soll ich einen Computer auf andere Weise bekommen? Dies ist alles Teil eines Lizenzierungssystems, das ich entwickle.
Mögliche duplizieren: http://stackoverflow.com/questions/1101772/win32-processoris-processorid-unique-for-all-computern Ich weiß für eine Tatsache, dass "ProcessorID" nicht auf VMWare unterstützt wird. –
@Cody Gray: Meinst du, VMWare emuliert den Intel CPUID Befehl nicht? Oder meinst du die hartcodierte ID, die jeder Intel-Prozessor angeblich hat (die im BIOS abgeschaltet werden kann ...) – JimR
@JimR: Ja. Ich meine, dass, wie die Frage beschreibt, der zurückgegebene Wert "null" ist. Weitere Informationen finden Sie unter [this thread] (http://forums.virtualbox.org/viewtopic.php?f=2&t=26178) in deren Foren. –