Можно создать дубликат:
C# WOW6432 registry node messin things upWeird поведение при чтении реестра в C#
Это код:
var b1 = Registry.LocalMachine.OpenSubKey("software", true);
var b2 = Registry.LocalMachine.OpenSubKey("software", true).OpenSubKey("company");
var r1 = Registry.LocalMachine.OpenSubKey("software").OpenSubKey("company").GetValueNames();
string resultString = Registry.LocalMachine.OpenSubKey("Software", true).CreateSubKey("company").GetValue(name).ToString();
Я призываю его name
= "ApplicationDirectory"
. В последней строке первые две переменные указывают на правильные местоположения (в зависимости от их свойства Name
). Проблема заключается в r1
, который не перечисляет содержимое HKEY_LOCAL_MACHINE\SOFTWARE\company
, а скорее HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\company
. Почему это? Это некоторое перенаправление в 64-битных машинах?
Краткий ответ: [Да] (http://msdn.microsoft.com/en-us/library/aa384232 (v = vs.85) .aspx). – Blorgbeard
64-разрядные компьютеры имеют раздел реестра, отдельный для 32-битного. Я думаю, что это называется виртуализацией реестра. –
http://stackoverflow.com/questions/8959983/c-sharp-wow6432-registry-node-messin-things-up/8960020#8960020 –