我在HKEY_LOCAL_MACHINE \ Software \ MyAppName(使用regedit(ive rebootet))中创建了一个密钥,但是当我尝试列出它们时,所有“MyAppName”都没有显示...... :(任何线索?
rkey = Registry.LocalMachine.OpenSubKey("Software");
foreach (string subkey in rkey.GetSubKeyNames())
{
WriteToLogFile("subkey: " + subkey);
}
答案 0 :(得分:5)
我将应用我的通灵调试功能,并猜测你有(a)64位操作系统,以及(b)Visual Studio 2010。
默认情况下,在VS2010中创建新的可执行项目时,它会设置要为x86平台构建的项目选项。 (Visual Studio的早期版本针对“任何平台”,它将在32位操作系统上JIT到x86代码,在64位操作系统上使用x64代码。但这会引起其他麻烦,所以他们在VS2010中changed the default 。)
在64位操作系统上,32位应用程序具有their own virtualized copy of HKLM\Software。 MS出于兼容性原因这样做,因此32位应用程序不会踩到64位应用程序的设置。因此,当您的32位应用程序寻找HKLM \ Software时,它实际上正在获得HKLM \ Wow6432Node \ Software。
四个简单的解决方法:
答案 1 :(得分:0)
不是挑剔,但实际位置是 HKLM \ SOFTWARE \ Wow6432Node 。乔回答的其他所有事情都在现场。