在C#中创建,编写和读取注册表

时间:2014-09-18 12:44:01

标签: c# registry clickonce

在我安装期间(我使用Clickonce)我想创建注册表,我的项目目前是.Net 3.5。

我的应用程序是32位,它可以安装在32位或64位机器上,我在创建注册表时遇到了一些问题。

在函数VerifyReg中,我创建了注册表,如果它们不存在(我的程序是应该在软件下的父分支的名称,取决于32或64位机器。

我的问题出在函数中:

中的CreateMoreRegistryKeys
RegistryKey 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
        }
    }

0 个答案:

没有答案