Windows 7 i zapis w HKLM\SOFTWARE\Wow6432Node

1

Witam, mam problem, kiedy aplikacja jest skompilowana jako 32-bitowa, uruchamiając ją w Windows 7 64-bit, programowy zapis z poziomu tej aplikacji (WinForms w C#, korzystając z metod do obsługi rejestru biblioteki .NET 2.0) powoduję zapisanie do klucza:
HKEY_LOCAL_MACHINE\Software\Wow6432Node\Nazwa_firmy\OrganizationDefaults\nazwa_programu zamiast do wskazanego przez metodę:

Registry.LocalMachine.CreateSubKey("Software\\Nazwa_firmy\\OrganizationDefaults\\nazwa_programu", RegistryKeyPermissionCheck.ReadWriteSubTree);

Później jest problem aby z aplikacji odczytywać klucze z tej lokalizacji, ponieważ jest odpalana na różnych systemach. Jest opcja aby skompilować jako 64 bitową i używać dwóch wersji w zależności od systemu. Wolałbym jednak rozwiązać ten problem tak aby program zapisywał klucze tam gdzie mu wskazuję.
Czy ktoś wie jak zrobić aby wymusić zapis w podanej lokalizacji niezależnie od systemu (32 - 64 bit) ?

Pozdrawiam

0

no ale w czym masz problem? Przecież jak exe jest 32 bitowy to na 64 bitowym systemie ZAWSZE będzie czytał z Wow6432Node

0

W tym, że skoro pisze aplikację, która ma operować na kluczach rejestru, to chciałbym mieć kontrole nad tym gdzie co jest zapisywane.
Załóżmy (choć nie to jest moim celem) chciałbym zrobić 32-bitową aplikację do edycji kluczy rejestru w systemach 64-bitowych. W momencie kiedy chciałbym edytować lub dodać wartość do podanego wyżej klucza, zostanie ona zapisana w innym kluczu ? Systemowy edytor rejestru a także programy firm trzecich pozwalają przecież na edycję dowolnego klucza. Wiem, że mogą to robić na poziomie niższym niż metody biblioteki .NET, tylko pytanie czy musiałbym się uciec np. do Win32API czy .NET framework pozwala na bardziej świadomą edycję kluczy.

1

Dostępne w .NET 4: podajesz RegistryView.Registry64 jako drugi argument w RegistryKey.OpenBaseKey.

http://msdn.microsoft.com/en-us/library/microsoft.win32.registrykey.openbasekey.aspx
http://msdn.microsoft.com/en-us/library/microsoft.win32.registryview.aspx

1

Witam, mam problem, kiedy aplikacja jest skompilowana jako 32-bitowa
Aplikacja w C# powinna być skompilowana jako AnyCPU, chyba że jest wyraźny powód, żeby było inaczej…

1 użytkowników online, w tym zalogowanych: 0, gości: 1