2009-09-09 47 views
1

有沒有辦法找出我的程序是否在嵌入式XP上運行?我已經嘗試過.NET System.Environment.OSVersion,但版本信息看起來像是「正常」Windows XP的版本信息,除了次要版本號,並且依賴於此似乎對我來說很脆弱。找出在XP上運行嵌入式

+3

你爲什麼要這樣做?一般來說,測試你需要的特定東西似乎更合適。 XP嵌入式可以配置,配置之間的差異可能與「普通」XP的差異相同。 – MSalters

回答

3

微軟eMVP(丙辰)的蛋頭咖啡表明GetVersionEx and a particular version registry key ...

1.調用API

BOOL GetVersionEx(LPOSVERSIONINFO lpVersionInfo); 

OSVERSIONINFOEX結構(這是 這個調用的輸出)

其中一個成員是wSuiteMask(一個 WORD變量)。

檢查此變量中的VER_SUITE_EMBEDDEDNT (0x00000040)標誌。

2.在註冊表

 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Product-Options] 
Key Name: ProductSuite Type:
MULTI_SZ Value: EmbeddedNT
查詢值(在XP專業版,似乎在這個關鍵不 內容)

雖然海倫·Elcock建議looking for the FBA registry value

我檢查的DWORD系統登錄值

[HKEY_LOCAL_MACHINE\SYSTEM\FBA]

呦你只能在嵌入式上獲得第一引導助手。

GetVersionEx似乎是更穩定的做法,因爲有人可能刪除在努力挽救另一對夫婦字節FBA關鍵,但我不知道,如果去除鍵將導致FBA再次反正運行。兩種方法都可能會很好。

+0

不要尋找FBA鍵 - 它不會在基於Win7的Windows Embedded(魁北克)中出現。使用'GetVersionEx()'中的'VER_SUITE_EMBEDDEDNT'標誌 - 這就是'GetVersionEx()'的用途。 –