2012-01-04 54 views
0

我想使用Windows機器的ProductId,因此我編寫了代碼 ,但是此代碼在運行Windows Server 2008時無法從註冊表獲取產品ID 註冊表中的產品編號是有註冊表無法在Windows 2008服務器中獲取產品Id

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

你是什麼意思,它「無法」獲得ProductID?當運行此代碼時,字符串數組**中包含的內容**名稱** – 2012-01-04 13:59:15

回答

0

確保戶口本碼下運行(在註冊表或至少該位置)有權從註冊表中讀取。

+0

我能夠獲取註冊表中除ProductId以外的所有信息,我擁有管理員權限可以爲此的原因 – 2012-01-04 11:10:18

+0

@NitinBourai - 調試時'name'是否包含它? – Oded 2012-01-04 11:20:48

+0

當我在Windows 2008以外的操作系統中運行代碼時,名稱包含ProductId,但是當我在2008上運行時名稱不包含ProductId,這是2008年的某種安全性嗎? – 2012-01-04 11:50:13

1

我找到了發生這種情況的原因。這是因爲你的程序是32位的而你的系統是64位的。 32位程序訪問註冊表的32位部分,這關鍵是不存在於32位部分,它位於:

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

在64位編譯程序,它是將工作。

+0

感謝回覆,漫長的等待 – 2012-06-27 06:35:10