1. 程式人生 > >判斷以及獲取visual studio安裝路徑

判斷以及獲取visual studio安裝路徑

最近發現用vs處理xml檔案還挺方便的哦,關鍵是快捷鍵已經用的很熟,除了沒有相同字串高亮這個notepad++特有的功能外,其他都已經很完善了,語法檢查不錯,所以,在工具裡就想用vs作為預設xml文字編輯器。

研究了很久的登錄檔項,才發現判斷vs是否安裝並不是那麼容易,起碼並不是那麼簡單的。

1.vs的註冊項在HKEY_CURRENT_USER/SOFTWARE/MICROSOFT/VISUALSTUDIO/ 下,如果同時安裝了vs8,vs9,那麼該項下降有兩個項:8.0 , 9.0;

  注意:不要從HKEY_LOCAL_MACHINE中找,你會發現一大堆版本,vs3—vs9都有。

2.vs的安裝位置,這個也不是那麼的靠譜,只能找到一個最後寫入登錄檔的位置。在安裝vs的時候會註冊一個

HKEY_LOCAL_MACHILE/SOFTWARE/MICROSOFT/CURRENTVERSION/APP PATHS/DEVENV.EXE,預設值就是vs的安裝位置,但是如果你先安裝了vs8,在安裝了vs9,那麼該項就被改寫成vs9的安裝目錄了。

3.也許你會說平常開啟vs solution沒問題啊,windows找到合適的vs開啟的,其實,還有一個東西,就是在c:/program files/common files/microsoft shared/msenv/vslauncher.exe,這個學名叫visual studio version selector,專門用來獲取正確的vs的版本。它應該維護了visual studio的版本及位置資訊,但是遺憾的是,vslauncher並沒有把相關資訊儲存在登錄檔裡--這可真是頭疼啊....

...

以上的思路貌似沒什麼錯,但是其實是錯了,各位看官發現了嗎...

從一開始我就錯了,導致後面的推理越來越複雜。第一步當我在看到HKEY_LOCAL_MACHINE/SOFTWARE/MICROSOFT/VISUALSTUDIO/中那麼多的版本時,我就片面的認為這個項裡的資訊並不實用,所以都沒有檢驗就直接忽略了,但其實在那裡面確實存在著關鍵的資訊。雖然那裡面確實存在著諸多的版本,但是沒有安裝的並沒有什麼值,而在已經安裝的項下,會看到InstallDir--也就是該版本的安裝目錄,這樣,就ok了。

操縱登錄檔,自己一個個寫登錄檔函式是要死人的,我曾多次寫過,但是多次忘記,那些函式的設計實在是很不人性化啊。但是不要緊,我們有bcg,使用其中的CBCGPRegistry類,能夠輕鬆操作登錄檔,當然像codeproject上也有很多免費的類庫,總之,千萬別自己寫,真要寫就寫個全面的,也釋出到網上去,以後可以複用的,否則就沒意思了,因為你不久就會忘記的:~(

總結一下:1.先從HKEY_CURRENT_USER下獲取使用者確實安裝的版本數,比如有8.0,9.0兩個版本,然後讓使用者選擇一個作為預設版本,接著從HKEY_LOCAL_MACHINE裡找到對應的版本號並獲取其地址,然後將其寫入工具的登錄檔裡。