代码之家  ›  专栏  ›  技术社区  ›  JeffO

检测应用程序是否已安装在VB.NET应用程序的Windows PC上的最可靠方法?

  •  2
  • JeffO  · 技术社区  · 16 年前

    我已经看到了检查注册表项的建议,但我不知道这个应用程序是否使用了任何注册表项,或者对于不同pc上的不同用户是否有所不同。

    许多注册表项没有设置默认值。我不喜欢深入,必须依赖字体设置的值。

    我想知道“应用程序名称”是否存在。我不能指望它有一个默认值,因为它从来没有。因为我使用的是.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)
    
    2 回复  |  直到 16 年前
        1
  •  2
  •   djbaldwin    16 年前

    '如果该项不存在,Everest_注册表将不包含任何内容,否则返回的项将被填充。试试这个:

        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
    
        2
  •  0
  •   John Knoeller    16 年前

    应用程序是否显示在“添加/删除程序”控制面板中?如果是,那么您肯定可以查看一些注册表项,这些注册表项不会因用户而异。

    使用 regedit.exe 要搜索CLSIDs键的子键,如果应用程序文件夹出现在任何子键中,那么这也不会因用户而异。