Я хочу, чтобы программное обеспечение было установлено на клиенте. Я также использую WMI и реестр.GetSubKeyNames не возвращает все ключи
Я нахожу большую часть информации при HKLM \ SOFTWARE \ MICROSOFT \ Windows \ CurrentVersion \ Uninstall
Однако, Dropbox, например, не появляется там. Dropbox находится под HKCU, поэтому я хочу также прочитать эти ключи. Простой, я думал, причина, что путь тот же, только изменения RegistryHive.
Проблема
Я не могу увидеть ключ УДАЛИТЬ, хотя, когда я нахожусь в CurrentVersion с помощью функции 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
Также я пробовал это с RegistryView.Registry64 - Я получаю тот же результат.
Что распечатывается, когда я использую GetSubKeyNames является следующее:
Device Metadata
Explorer
Group Policy
GrpConv
Internet Settings
Media Center
Run
Shell Extensions
Telephony
ThemeManager
WinTrust
Кто-нибудь знает, как я могу решить эту проблему?
Это может быть по соображениям безопасности. Попробуйте выполнить повышенные привилегии. –
Ваш комментарий был полезен. Я запускал приложение в качестве системного пользователя, у которого нет этого ключа, так как это текущий пользователь. Я буду проходить через HKEY_USERS, где теперь есть ключ Uninstall. Таким образом, я получаю программное обеспечение всех пользователей. Спасибо тебе, друг. – FRules