获取Windows产品密钥,域名,用户名等详细信息

如何获得操作系统详细信息,如操作系统Serial Number (操作系统产品密钥), User Domain NameUser NamePC Full Name ? 什么是最好的方式和最佳的方式来获得它?

Solutions Collecting From Web of "获取Windows产品密钥,域名,用户名等详细信息"

统环境

检查出(静态) System.Environment类。

它具有MachineNameUserDomainNameUserName属性。

系统管理

如果您正在查找BIOS序列号(或其他硬件上的大量信息),则可以尝试System.Management命名空间,特别是SelectQueryManagementObjectSearcher

 var query = new SelectQuery("select * from Win32_Bios"); var search = new ManagementObjectSearcher(query); foreach (ManagementBaseObject item in search.Get()) { string serial = item["SerialNumber"] as string; if (serial != null) return serial; } 

您可以通过查询,例如Win32_Processor或MSDN上列出的其他信息来获得有关计算机的其他信息。 这是通过WQL使用WMI

Windows产品密钥通过注册表

对于操作系统序列号,在许多Windows版本中,它存储在注册表中的HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\DigitalProductId ,但它是以某种编码形式,需要解码才能获得产品密钥。

你可以使用下面的方法来解码这个值,在这里可以找到(但是为了清晰起见稍作修改)。

 public string DecodeProductKey(byte[] digitalProductId) { // Possible alpha-numeric characters in product key. const string digits = "BCDFGHJKMPQRTVWXY2346789"; // Length of decoded product key in byte-form. Each byte represents 2 chars. const int decodeStringLength = 15; // Decoded product key is of length 29 char[] decodedChars = new char[29]; // Extract encoded product key from bytes [52,67] List<byte> hexPid = new List<byte>(); for (int i = 52; i <= 67; i++) { hexPid.Add(digitalProductId[i]); } // Decode characters for (int i = decodedChars.Length - 1; i >= 0; i--) { // Every sixth char is a separator. if ((i + 1) % 6 == 0) { decodedChars[i] = '-'; } else { // Do the actual decoding. int digitMapIndex = 0; for (int j = decodeStringLength - 1; j >= 0; j--) { int byteValue = (digitMapIndex << 8) | (byte)hexPid[j]; hexPid[j] = (byte)(byteValue / 24); digitMapIndex = byteValue % 24; decodedChars[i] = digits[digitMapIndex]; } } } return new string(decodedChars); } 

或者,我发现一个开源的C#项目,可以提取任何版本的Windows的产品密钥: http : //wpkf.codeplex.com/它使用上面给出的方法,并提供了一些关于机器的额外信息。

您是否尝试过Systeminformation类,它提供了大量有关当前系统环境的信息,请看MSDN站点上的示例。 它具有以下属性:

ComputerName , UserDomianName , UserName等等

您需要使用IPGlobalProperties.GetIPGlobalProperties方法获取网络相关信息:

 var conInfo = IPGlobalProperties.GetIPGlobalProperties(); Console.WriteLine(conInfo.HostName); Console.WriteLine(conInfo.DomainName); ... 

对于机器名称使用Environment.MachineName属性 :

 Console.WriteLine(System.Environment.MachineName);