У вас есть имя ПК в качестве значения, которое вы хотите, поэтому вы можете получить его из Environment.MachineName
, если вы хотите локальный компьютер, или вы можете IPHostEntry hostEntry = Dns.GetHostEntry(ip);
затем string host = hostEntry.HostName;
использовать DNS для разрешения имени удаленного компьютера, еслиу вас есть только его IP.
Вы можете получить определенную информацию из реестра после того, как убедитесь, что удаленный реестр работает, при условии, что вам нужен удаленный компьютер:
ServiceController sc = new ServiceController("RemoteRegistry", computer);
if (sc.Status.Equals(ServiceControllerStatus.Running))
{
// do your stuff
}
И вы можете запуститьесли оно найдено, оно остановилось:
if (sc.Status.Equals(ServiceControllerStatus.Stopped) ||
sc.Status.Equals(ServiceControllerStatus.StopPending))
{
sc.Start();
}
Добавьте этот оператор using
в начало вашей страницы:
using Microsoft.Win32;
В качестве имени компьютера вы можете перейти к HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet\ Control \ ComputerName \ ActiveComputerName:
string path = @"HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ComputerName\ActiveComputerName";
RegistryKey rk = RegistryKey.OpenRemoteBaseKey(RegistryHive.LocalMachine, computer).OpenSubKey(path);
string pcName = rk.GetValue("computerName").ToString();
Для любых локальных команд реестра просто удалите RegistryKey.OpenRemoteBaseKey(
и , computer)
- становится:
RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64).OpenSubKey(path);
Обычно RegistryView.Registry64
не требуется (вы можете использовать RegistryView.Default
вместо этого), но может быть необходимо при создании 32-разрядного приложения, которое должно попасть в реестр на 64-разрядной ОС.Вместо всего в одной строке, вы также можете сделать что-то вроде этого, например:
using (var root = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64))
{
using (var key = root.OpenSubKey(@"Software\Microsoft\Windows NT\CurrentVersion", false))
{
var registeredOwner = key.GetValue("RegisteredOwner");
}
}
Кредит : https://social.msdn.microsoft.com/Forums/en-US/ea997421-4d55-49db-97ad-cf629c65577b/registrylocalmachineopensubkey-does-not-return-all-values?forum=csharpgeneral
Для имени процессора:
string path = @"HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System\CentralProcessor\0";
RegistryKey rk = RegistryKey.OpenRemoteBaseKey(RegistryHive.LocalMachine, computer).OpenSubKey(path);
string cpuName = rk.GetValue("processorNameString").ToString();
Для имени операционной системы и ключа:
string path = @"SOFTWARE\Microsoft\Windows NT\CurrentVersion";
RegistryKey rk = RegistryKey.OpenRemoteBaseKey(RegistryHive.LocalMachine, computer).OpenSubKey(path);
string osName = rk.GetValue("productName").ToString();
string servicePack = rk.GetValue("CSDVersion").ToString();
byte[] digitalProductId = registry.GetValue("DigitalProductId") as byte[];
string osProductKey = DecodeProductKey(digitalProductId);
От Geeks With Blogs для получения ключей продукта:
public static string DecodeProductKey(byte[] digitalProductId)
{
// Offset of first byte of encoded product key in
// 'DigitalProductIdxxx" REG_BINARY value. Offset = 34H.
const int keyStartIndex = 52;
// Offset of last byte of encoded product key in
// 'DigitalProductIdxxx" REG_BINARY value. Offset = 43H.
const int keyEndIndex = keyStartIndex + 15;
// Possible alpha-numeric characters in product key.
char[] digits = new char[]
{
'B', 'C', 'D', 'F', 'G', 'H', 'J', 'K', 'M', 'P', 'Q', 'R',
'T', 'V', 'W', 'X', 'Y', '2', '3', '4', '6', '7', '8', '9',
};
// Length of decoded product key
const int decodeLength = 29;
// Length of decoded product key in byte-form.
// Each byte represents 2 chars.
const int decodeStringLength = 15;
// Array of containing the decoded product key.
char[] decodedChars = new char[decodeLength];
// Extract byte 52 to 67 inclusive.
ArrayList hexPid = new ArrayList();
for (int i = keyStartIndex; i <= keyEndIndex; i++)
{
hexPid.Add(digitalProductId[i]);
}
for (int i = decodeLength - 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);
}
То, что получаеттрудные из пути.Дело в том, что реестр ваш друг.