在我安装期间(我使用Clickonce)我想创建注册表,我的项目目前是.Net 3.5。
我的应用程序是32位,它可以安装在32位或64位机器上,我在创建注册表时遇到了一些问题。
在函数VerifyReg中,我创建了注册表,如果它们不存在(我的程序是应该在软件下的父分支的名称,取决于32或64位机器。
我的问题出在函数中:
中的CreateMoreRegistryKeysRegistryKey RegKeyWow64 = RegKeyMain.OpenSubKey(@"SOFTWARE\Wow6432Node", true);
即使我是该机器的管理员,我在注册表中写入错误
这是在创作和阅读过程中我错过了什么功能?
public void VerifyReg()
{
string keyName = @"SOFTWARE\Myprogram";
RegistryKey RegKeyMain = Registry.LocalMachine;
RegistryKey skSub = null;
skSub = RegKeyMain.OpenSubKey(keyName);
if (skSub == null)
{
skSub = RegKeyMain.CreateSubKey(keyName);
}
CreateMoreRegistryKeys();
}
public void CreateMoreRegistryKeys()
{
bool bIs64bits = Environment.Is64BitOperatingSystem;
string keyName = @"SOFTWARE\Myprogram\Folder";
RegistryKey RegKeyMain = Registry.LocalMachine;
if (bIs64bits)
{
keyName = @"Myprogram\Folder";
RegistryKey RegKeyWow64 = RegKeyMain.OpenSubKey(@"SOFTWARE\Wow6432Node", true);
CreateRegKeyFor64or32Bits(RegKeyWow64, keyName);
}
else
{
CreateRegKeyFor64or32Bits(RegKeyMain, keyName);
}
}
public void CreateRegKeyFor64or32Bits(RegistryKey RegKeyMain, string keyName)
{
RegistryKey skSubWy = RegKeyMain.CreateSubKey(keyName, RegistryKeyPermissionCheck.ReadWriteSubTree);
if (skSubWy != null)
{
..Do something
}
}