2010-01-30 78 views
2

我知道應用程序的默認安裝路徑和.exe文件的名稱,但有沒有辦法查看它是否實際安裝? 我見過有關檢查註冊表項的建議,但我不知道這個應用程序是否使用了任何或者如果在不同的PC上使用不同的用戶。最確切的方法來檢測應用程序是否已安裝在Windows PC上的VB.NET應用程序?

許多註冊表項沒有設置默認值。我更喜歡不要太深入,必須依賴字體設置的值。

我想知道是否存在「App_Name」。我不能依靠它有一個默認值,因爲它從來沒有。由於我使用的是.GetValueKind,我不必擔心具有任何值集合的「AboutSiteUR」,假設它具有實際存在的類型。否則,我假設Try/Catch會捕獲IO.IORegistry類型錯誤(我不確定那個)。

Dim sDisplay_Reg_Value As String 
Dim Everest_Registry As Microsoft.Win32.RegistryKey = _ 
     My.Computer.Registry.CurrentUser.OpenSubKey("Software\Company_Name\App_Name") 
     Try 
      sDisplay_Reg_Value = CType(Everest_Registry.GetValueKind("AboutSiteUR"), String) 
+0

它是否安裝了安裝程序?如果是這樣,你可以依靠註冊表。 – Amirshk 2010-01-30 20:50:13

回答

2

'如果密鑰不存在Everest_Registry將包含Nothing,否則返回的密鑰將被填充。試試這個:

Dim Everest_Registry As Microsoft.Win32.RegistryKey = _ 
    My.Computer.Registry.CurrentUser.OpenSubKey("Software\Microsoft\Internet Explorer") 
    If Everest_Registry Is Nothing Then 
     'key does not exist 
     MsgBox("Key does not exist") 
    Else 
     'key is valid, display actual name 
     MsgBox(Everest_Registry.Name) 
    End If 
+0

具有完美的感覺。謝謝 – JeffO 2010-02-01 17:48:23

0

該應用程序是否顯示在「添加/刪除程序」控制面板中?如果是的話,那麼肯定有一些註冊表項可以查看,這不會因用戶而異。

使用regedit.exe來搜索CLSID鍵的子鍵,如果應用程序文件夾出現在任何子鍵中,那麼這也是不會由用戶改變的。

或者你可以問他們。我曾經爲一家可以在百思買購買軟件的公司工作,等等。在他們的軟件中,每個應用程序都創建了一個特定的註冊表鍵,以便他們的所有應用程序都可以找到對方。

+0

我正在尋找文件夾,因爲我不想檢查任何值(很多默認值都沒有值)。 – JeffO 2010-01-31 02:13:45

+0

@傑夫:你能重新說一句嗎?我不明白。 – 2010-01-31 02:19:33

+0

對不起,術語不好。例如:「HKEY_CURRENT_USER \ Software」確實存在,但Name:(默認)類型:REG_SZ Data:(未設置的值)不會返回值。那麼,我怎麼知道「HKEY_CURRENT_USER \ Software \ ACME Software \」的存在,因爲這個值沒有幫助。 – JeffO 2010-01-31 15:42:18

相關問題