2012-01-04 2 views
0

Я хочу использовать ProductId для оконной машины, поэтому я написал этот код , но этот код не может получить ProductId из реестра при работе на сервере Windows 2008 , когда я посетил реестр PRODUCTID есть в реестреНе удалось получить идентификатор продукта в windows 2008 server

string[] names = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows NT\CurrentVersion").GetValueNames(); 
foreach (string s in names) 
{ 
    listBox1.Items.Add(s); 
} 
+0

Что именно означает «неспособность» получить ProductID? Когда этот код запущен, то, что содержится в строковом массиве **, имена ** –

ответ

0

Убедитесь, что учетная запись этот код работает под управлением имеет разрешения на чтение из реестра (или, по крайней мере, это место в реестре).

+0

Я могу получить всю информацию в этом разделе реестра, кроме ProductId, у меня есть права администратора, что может быть причиной этого –

+0

@NitinBourai - Когда отладка содержит «имена»? – Oded

+0

, когда я запускаю код в ОС, отличном от Windows 2008, имена содержат ProductId, но когда я запускаю имена 2008, не содержит ProductId, это какая-то безопасность в 2008 году? –

1

Я выяснил причину этого. Это потому, что ваша программа 32-битная, а ваша система - 64-битная. 32-разрядные программы доступа к 32-разрядной части реестра, и этот ключ не присутствует в 32-битном части, которая находится в:

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion 

скомпилировать программу в 64-битной, и это будет работать ,

+0

спасибо за ответ, долго ждать –

Смежные вопросы