GetSubKeyNames 不会返回所有键
本文关键字:返回 GetSubKeyNames | 更新日期: 2023-09-27 18:36:47
我想在客户端上安装软件。我也使用 WMI 和注册表。
我在 HKLM''软件''MICROSOFT''WINDOWS''当前版本''卸载下找到大部分信息
但是,例如,Dropbox不会出现在那里。Dropbox位于HKCU下,所以我也想阅读这些密钥。很简单,我想,因为路径是相同的,只是注册表蜂巢发生了变化。
问题
当我在当前版本中使用函数 GetSubKeyNames 时,我看不到密钥卸载。
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
我也用注册表视图.注册表64尝试了这个 - 我得到了相同的结果。
当我使用GetSubKeyNames时打印出的内容如下:
Device Metadata
Explorer
Group Policy
GrpConv
Internet Settings
Media Center
Run
Shell Extensions
Telephony
ThemeManager
WinTrust
有人知道我如何解决这个问题吗?
我也遇到了这个问题,检查 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);
您可以使用
:Registry.LocalMachine.OpenSubKey("Your Key Here")。GetSubKeyNames()
但请尝试将平台目标同时更改为 x86 和 x64。 您将看到两种不同的结果。
要更改平台目标:转到项目 ->属性 -> 生成 -> 平台目标尝试将其设置为 X86,打印结果。 然后设置为 x64,打印结果
我遇到了完全相同的问题,但问题还在于执行 C# 函数的是安装程序。在安装过程中,当然所需的密钥不存在,因为它没有安装。
这是非常特定于安装程序的问题。