Registry GetSubKeyNames () listuje inne klucze niż Regedit?
Używamy WIX do instalacji wielu usług, które tworzymy. Piszę szybkie narzędzie do zrzutu aktualnie zainstalowanych usług. Po prostu iteruję nad podkluczami:
SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
Szukam DisplayName
. Problem w tym, że tylko dwie z moich dziesięciu usług pojawiają się na liście.
Jednak, gdy patrzę na podklucze w Regedit, są tam. Jak również, są one w zainstalowanych programach (i mogę je znaleźć w SELECT * z Win32_Product zbyt).
Przejrzałem dokumenty MSDN, próbuje dowiedzieć się, czy istnieje jakiś specjalny widok rejestru, że brakuje. Może to kwestia przywilejów? Ale uruchamiam narzędzie jako admin. Czy jest jakiś problem z montażem ula?Żeby było jasne z kodem, oto kod aplikacji testowej (z ta odpowiedź):
String registryKey = @"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall";
using(Microsoft.Win32.RegistryKey key = Registry.LocalMachine.OpenSubKey(registryKey))
{
foreach(String subkeyName in key.GetSubKeyNames())
Console.WriteLine(key.OpenSubKey(subkeyName).GetValue("DisplayName"));
}
Jakieś przemyślenia na ten temat? 20
1 answers
Problem jest problemem 32/64 bitowym. Wydaje się, że niektóre instalacje miały miejsce pod
HKEY_LOCAL_MACHINE\Software\Wow6432Node\...
Kiedy wymieniam je obie, dostaję wszystkie moje instalacje.
Najwyraźniej mogę też użyć RegistryKey.OpenBaseKey()
z RegistryView.Registry64/32
zamiast Wow6432Node
.
25
Author: teleball,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-01-28 15:42:47
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-01-28 15:42:47