我想在客户端上安装该软件。我也使用WMI和注册表。
我在 HKLM \ SOFTWARE \ MICROSOFT \ WINDOWS \ CURRENTVERSION \ UNINSTALL
下找到大部分信息但是,例如,Dropbox不会出现在那里。 Dropbox位于 HKCU 下面,所以我也想读取这些键。简单,我想,导致路径是一样的,只是RegistryHive的变化。
问题
虽然当我使用GetSubKeyNames函数进入CurrentVersion时,我看不到键 UNINSTALL 。
var root = RegistryKey.OpenBaseKey(RegistryHive.CurrentUser, RegistryView.Registry32)
var key = root.OpenSubKey(@"SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION") // works
var key = root.OpenSubKey(@"SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\Uninstall") // doesnt work
我也尝试使用RegistryView.Registry64 - 我得到了相同的结果。
使用GetSubKeyNames时打印出的内容如下:
Device Metadata
Explorer
Group Policy
GrpConv
Internet Settings
Media Center
Run
Shell Extensions
Telephony
ThemeManager
WinTrust
有人知道如何解决这个问题吗?
答案 0 :(得分:4)
我也遇到了这个问题,检查32位和64位视图是否有效。
var HKLM32 = RegistryKey.OpenRemoteBaseKey(RegistryHive.LocalMachine, "computername", RegistryView.Registry32);
var HKLM64 = RegistryKey.OpenRemoteBaseKey(RegistryHive.LocalMachine, "computername", RegistryView.Registry64);
key32 = HKLM32.OpenSubKey(registryKeytoFind);
key64 = HKLM64.OpenSubKey(registryKeytoFind);
答案 1 :(得分:1)
你可以使用:Registry.LocalMachine.OpenSubKey("你的钥匙在这里")。GetSubKeyNames()
但是尝试将平台目标更改为x86和x64。你会看到两个不同的结果。
要更改平台目标: 转到项目 - >属性 - >构建 - >平台目标 尝试将其设置为X86,打印结果。然后设置为x64,打印结果
答案 2 :(得分:0)
我遇到了完全相同的问题,但问题还在于它是执行 C# 函数的安装程序。并且在安装过程中当然所需的密钥不存在,因为它没有安装。
这是安装程序特有的问题。