的綱領性識別我有需要識別安裝在PC上的Windows版本的一些獨立的C++代碼(即不是Windows程序)。出帶外的Windows Server VS客戶端
我可以根據內核版本輕鬆區分不同的Windows客戶端版本(例如ntoskrnl.exe上的GetFileVersionInfo
),但是我想知道是否有可靠的方法來區分客戶端和服務器安裝。
使用此方法區分Windows Vista SP2和Windows Server 2008 SP2(它們都是6.0 build 6002)以及Windows 7和Windows Server 2008 R2(6.1版本生成RTM版本和6.1生成版本7601)時出現問題SP2,兩者)。什麼是可靠的(並且最好儘可能直截了當,避免註冊表會很好,因爲訪問Win32 API不可用)爲環境外代碼正確識別客戶端與服務器操作系統的方法?
我想我可以檢查只存在於服務器版上的文件(無論配置如何,保證在任何服務器版本上安裝的文件都是好的),檢查Panther文件夾(安全刪除,所以不可以保證)等,但我相信這是一個人們遇到的問題,並希望更好地解決問題?
(旁註:這個問題已經被問on SO before,但解決方案(WMI)不適用於出帶外檢查)
出於純粹的好奇心,你爲什麼需要這樣做?我一直在琢磨幾個小時,想不到一個用例... –
這是鎖定或解鎖恢復軟件的某些功能。 –