WindowsSdkDir 從何處來?
緣起
在《修復被破壞的 vs 工程設置》和《修復被破壞的 vs 工程設置(續)》這兩篇文章中,分享了調查 VS 包含路徑錯誤的問題,感興趣的小伙伴兒可以查看。依稀記得在 2013 年的時候調查過類似的問題。前一陣子沒翻到,這兩天在翻筆記的時候居然意外的找到了。特整理分享給大家。
依稀記得是編譯的時候有問題才調查的。
查看 WindowsSdkDir
$(WindowsSdkDir)$ 可通過工程中的宏來查看。先查看宏,
view-all-macros
找到 WindowsSdkDir,查看。
watch-windowssdk
小貼士:可以在上方的搜索框輸入關鍵字進行過濾。
WindowsSdkDir 從何處來
從上圖,我們可以看到 $(WindowsSdkDir)$ 的值。但是這個值是從哪里來的呢?
可以通過各種文件內容搜索工具來搜索,或者更省事的辦法是用 win7 自帶的 findstr 命令來搜索。
猜測這個值必然和 vs 有關,所有搜索范圍限定為 vs 的安裝目錄。具體搜索命令如下:
search-using-findstr
等待搜索結束,就可以到 d:\result.log 里查看搜索結果了。內容如下:
search-result
用紅框選出來的兩個地方比較靠譜,屬於 vcvars*.bat,這個應該是設置一些環境變量的。查看對應的 vcvars*.bat,如下:
view-vcvars
從上圖可知,會先到注冊表中查找,如果沒有找到再使用預先指定的值。在注冊表中查找的時候,會先到 HKLM 下查找,如果沒找到,再到 HKCU 下查找。
HKLM 下的值如下圖:
value_under_hklm
HKCU 的值如下圖:
value_under_hkcu
使用 procmon 觀察加載過程
話不多說,直接看圖:
watch-using-procmon
總結
- 這個調查有年頭兒了,沒想到還能找到當時的筆記。真的是 好記性不如爛筆頭!
- 如果沒有三方搜索工具(比如,
FileLocator),可以試試系統自帶的findstr。
