Pracuję na 64-bitowym systemie Windows, a moja aplikacja działa z podwyższonymi uprawnieniami. Mam problem z następującym bardzo prosty kawałek kodu:C# odczytuje błędne dane rejestru w 64-bitowym systemie operacyjnym
myKey = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Run");
if (myKey != null)
{
string[] HKLMvaluenames = myKey.GetValueNames();
}
ale z jakiegoś powodu HKLMvaluenames tablicy jest wypełniane wartościami od następującego klucza:
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Run
Czy istnieje sposób wokół tego problemu?
Czy kod jest uruchamiany w trybie 32-bitowym ze względu na zależność zewnętrzną/niezarządzaną lub coś podobnego? –
Czy Twoja aplikacja została skompilowana jako aplikacja 32-bitowa? Wow64 to 32-bitowa warstwa kompatybilności dla 64-bitowych systemów operacyjnych Windows. – Oded
@Nick: Nie muszę uruchamiać się w wersji 32-bitowej, ale chcę, aby moja aplikacja działała również na 32-bitowych systemach operacyjnych (jest to bardzo ważne). @Oded: Tak, wiem, co to jest wow64. Moja aplikacja jest kompilowana przy użyciu VX2010 Express, więc myślę, że nie mogę nawet wybrać sposobu jej kompilacji. Czy mogę to gdzieś sprawdzić? – baal80