none
如何匯出系統軟體清單 RRS feed

  • 問題

  • 各位大大好,

    小弟最近接到一個任務要管控Client端的軟體安裝狀況,所以我想寫支程式可以匯出系統已安裝軟體的清單來管控,不知各位大大是否有類似的經驗可以分享一下,謝謝

    2007年6月9日 上午 12:19

解答

  • 在 Registry 中有一個地方記載己安裝的程式: 

    Registry Key Path
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall

     

    你可以列舉出這個 key 的子機碼,讀取子機碼中的 DisplayName 字串值,就可以取得己安裝軟體的清單 .

    但這只能取得有註冊在這個地方的軟體,如果沒有註冊在這個地方的軟體就無法取得 .

     

     

    2007年6月9日 上午 01:30
    版主

所有回覆

  • 在 Registry 中有一個地方記載己安裝的程式: 

    Registry Key Path
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall

     

    你可以列舉出這個 key 的子機碼,讀取子機碼中的 DisplayName 字串值,就可以取得己安裝軟體的清單 .

    但這只能取得有註冊在這個地方的軟體,如果沒有註冊在這個地方的軟體就無法取得 .

     

     

    2007年6月9日 上午 01:30
    版主
  • 感謝 小朱 的幫忙,我大概知道要如何去做了,謝謝
    2007年6月10日 上午 01:54
  • 各位好:

    我想要在系統中找到特定的軟體,於是找到這篇文章。目前遇到一個問題。

     

    以下的 code 會列舉出 Uninstall 中的軟體機碼 s 及名稱,但如果機碼 s 是 {50E00EBC-A515-4997-9D56-B35D2B102989} 這種東西,則根本不會被 GetSubKeyNames 抓出來。剛好我要找的軟體是藏在這種機碼裡面的。

    請問我該如何改,才會一併列出?

    謝謝。

     

    Code Snippet

        Dim rg_LocalMachine As RegistryKey = Registry.LocalMachine
        Dim rg_Uninstall As RegistryKey = rg_LocalMachine.OpenSubKey("SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall")
        Dim vn_Software As String() = rg_Uninstall.GetSubKeyNames
        Dim s As String
        For Each s In vn_Software
            MsgBox(s & vbNewLine & rg_Uninstall.OpenSubKey(s).GetValue("DisplayName"))
        Next

     

    2007年8月24日 上午 04:23