首先聲明,我對win32了解不是很深,如有紕漏歡迎指正。

微軟從Windows7開始在任務管理器中加入了更YD的列,由於語言的差異,翻譯過來的文字總是讓人不明所以。所謂操作系統上下文就是Operating System Context,還是英文比較好理解。

正因為這樣在google里搜索操作系統上下文出來的結果很奇葩。所以按英文搜索,首先找到的是這個:http://support.microsoft.com/kb/978637/en-us機器翻譯

 

微軟的渣翻譯啊這都什麼標題啊……

 

大致看了一下,和兼容性有關係,具體看到了介紹Application Manifest http://msdn.microsoft.com/en-us/library/dd371711(VS.85).aspx機器翻譯】這個鏈接。這個Application Manifest用過VS的應該都有所了解的。然後我好像明白了……

Windows 7 introduces a new section in the application manifest called “Compatibility.” This section helps Windows determine the versions of Windows that an application was designed to target, and enables Windows to provide the behavior that the application expects based on the version of Windows that the application targeted.

……

Applications without a Compatibility section in their manifest will receive Windows Vista behavior by default on Windows 7 and future Windows versions.

為了驗證第二句話,用gcc編譯了一個helloworld,看到上下文是Windows Vista。

哦怪不得之前網站統計的時候把我的傲遊的UA認成vista了。

【魂淡這是逼着人用VS么……

貌似Win8裏面已經解決了這個問題,因為那個補丁好像沒有NT6.2版本,而且現在傲遊的UA也正常了……

【2013-03-08更新:後來發現windows下的ELF格式程序似乎大家都在努力遵守,包括win下的gcc,pyinstaller都可以通過添加manifest來搞定