2009-08-11 78 views
3

我需要在多個進程的應用程序中訪問motheroard標識(串行,製造等)。 我已經能夠使用WMI成功查詢這個,但我正在尋找替代方案。訪問不使用WMI的主板信息

如果你願意瞭解的情況:

我有一些應用程序的行爲是不同,這取決於硬件配置,或者如果一個特定的環境變量設置(用於測試目的)。

bool IsVideoCardDisplay = (getenv("Z_VI_DISPLAY") || !QueryWmiForSpecialBoard()) ? false : true; 

當設置環境變量時,WMI查詢不是必需的 - 應用程序運行良好。但是,如果環境變量不存在,則在需要進行WMI查詢時,應用程序的某些組件無法啓動。我懷疑WMI調用可能會有一些副作用(每個進程最多隻發生一次,這就是爲什麼我要尋求替代方法)。

回答

1

顯然是沒有辦法做到這一點,這是不幸的。

-2

該信息由CPUID指令提供。鏈接可以幫助您使用此指令揭露執行指令的結果的程序。

cpuid GNU program

+0

我不感興趣,在CPU的信息,但我需要能夠識別製造商和序列號的主板。 – Valentein 2009-08-12 15:11:28

+0

CPUID指令提供串行# – steve 2009-08-12 21:32:44

+1

再一次,這是我感興趣的主板。__cpuid提供有關CPU的信息,這與我的應用程序無關。 – Valentein 2009-08-13 15:07:09

2

在Vista中+你可以使用GetSystemFirmwareTable訪問SMBIOS表的API並將其解析出來獲取[可能可用的]序列號和其他標識字符串和值。

特別是你可以訪問主板的數據,包括供應商和S/N:

  Intel Corporation 
      DZ77BH-55K 
      AAG39018-400 
      BQBH206600DT