如题,32位下写入注册表,然后另一程序在卸载时删除该注册表,在64位WIN7运行时出错,写入注册表的程序是用C++写的ACtive控件,然后我试了下,如果写一个C++的MFC aplication程序运行在64位WIN7下删除能成功,代码如下CRegKey reg;
LONG lRes = reg.Open(HKEY_LOCAL_MACHINE, _T("SOFTWARE\\ABCDE"));
reg.DeleteValue(_T("client"));
但是如果用C#写的却删除失败RegistryKey hkml = Registry.LocalMachine;
            RegistryKey software = hkml.OpenSubKey("SOFTWARE\\ABCDE", true);
            software.DeleteValue("client");
            software.Close();
我看了下注册表,发现ACtive在写入注册表时,XP下是写在"HKEY_LOCAL_MACHINE\SOFTWARE\ABCDE\"下,但64位WIN7是写在了共有四个目录下,“计算机\HKEY_USERS\....\SOFTWARE\Wow6432Node\ABCDE”下“计算机\HKEY_CLASES_ROOT\...\SOFTWARE\Wow6432Node\ABCDE”还有“计算机\HKEY_CURRENT_USER\....\SOFTWARE\Wow6432Node\ABCDE”,还有,“计算机\HKEY_USERS\....\SOFTWARE\Wow6432Node\ABCDE”(与第一个中间路径不一样,一长串数字),为嘛用C++删除能成功关联删除成功,用C#却失败,上面两个方法定位注册表路径有不一样嘛?