पर आधारित एक अद्वितीय आईडी बनाना मैं एक लाइसेंस तैयार कर रहा हूं जो मशीन के लिए विशिष्ट है। लाइसेंस निम्नलिखित मदों पर आधारित है:सी # हार्डवेयर आईडी
- मैक पता
- सीपीयू सीरियल नंबर
- कंप्यूटर वॉल्यूम सीरियल drive0 की संख्या
मैं यह सोचते हैं कि अगर 3 मैच के 2, तो मेरा लाइसेंस मान्य है। तो, एक नया नेटवर्क कार्ड प्राप्त हो सकता है, और लाइसेंस अभी भी मान्य है, आदि
क्या यह एक अच्छा दृष्टिकोण है या क्या मुझे नियमित रूप से मेल खाने या बदलने के साथ समस्याएं नहीं हैं?
मैं कंप्यूटर के लिए एक अद्वितीय पहचानकर्ता प्राप्त करने की कोशिश कर रहा हूं ताकि मैं लाइसेंस को प्रमाणित कर सकूं।
कृपया मुझे बताएं कि यह कैसा दिखता है या यदि आपके पास बेहतर समाधान है!
फिर से धन्यवाद!
** यहाँ क्या मैं के साथ **
मैं केवल VolumeSerial, सीपीयूआईडी, और VideoControllerDescription का उपयोग कर समाप्त हो गया आए।
public enum HardwareProfileComponents
{
ComputerModel,
VolumeSerial,
CpuId,
MemoryCapacity,
VideoControllerDescription
}
public static Dictionary<string, string> HardwareProfile()
{
var retval = new Dictionary<string, string>
{
{HardwareProfileComponents.ComputerModel.ToString(), GetComputerModel()},
{HardwareProfileComponents.VolumeSerial.ToString(), GetVolumeSerial()},
{HardwareProfileComponents.CpuId.ToString(), GetCpuId()},
{HardwareProfileComponents.MemoryCapacity.ToString(), GetMemoryAmount()},
{HardwareProfileComponents.VideoControllerDescription.ToString(), GetVideoControllerDescription()}
};
return retval;
}
private static string GetVideoControllerDescription()
{
Console.WriteLine("GetVideoControllerDescription");
var s1 = new ManagementObjectSearcher("select * from Win32_VideoController");
foreach (ManagementObject oReturn in s1.Get())
{
var desc = oReturn["AdapterRam"];
if (desc == null) continue;
return oReturn["Description"].ToString().Trim();
}
return string.Empty;
}
private static string GetComputerModel()
{
Console.WriteLine("GetComputerModel");
var s1 = new ManagementObjectSearcher("select * from Win32_ComputerSystem");
foreach (ManagementObject oReturn in s1.Get())
{
return oReturn["Model"].ToString().Trim();
}
return string.Empty;
}
private static string GetMemoryAmount()
{
Console.WriteLine("GetMemoryAmount");
var s1 = new ManagementObjectSearcher("select * from Win32_PhysicalMemory");
foreach (ManagementObject oReturn in s1.Get())
{
return oReturn["Capacity"].ToString().Trim();
}
return string.Empty;
}
private static string GetVolumeSerial()
{
Console.WriteLine("GetVolumeSerial");
var disk = new ManagementObject(@"win32_logicaldisk.deviceid=""c:""");
disk.Get();
string volumeSerial = disk["VolumeSerialNumber"].ToString();
disk.Dispose();
return volumeSerial;
}
private static string GetCpuId()
{
Console.WriteLine("GetCpuId");
var managClass = new ManagementClass("win32_processor");
var managCollec = managClass.GetInstances();
foreach (ManagementObject managObj in managCollec)
{
//Get only the first CPU's ID
return managObj.Properties["processorID"].Value.ToString();
}
return string.Empty;
}
सबसे पहले, यह नहीं किया जा सकता - एक GUID एक विशेष रूप से गणना की गई यूयूआईडी है, इसलिए स्वयं में GUID शब्द का उपयोग करके आप परिभाषित करते हैं कि यह गणना के विशिष्ट रूपों पर आधारित है। – TomTom
मैंने इसे "GUID" कहने से बचने के लिए शीर्षक बदल दिया, क्योंकि यह @TomTom नोट्स के रूप में एक विशिष्ट प्रकार की आईडी है। –
ऐसा क्यों नहीं किया जा सकता है? – ivowiblo