我正在尝试使用我的C#应用程序写入注册表.
我正在使用这里给出的答案:使用C#将值写入注册表
但是由于某种原因,密钥未添加到注册表中.
我正在使用以下代码:
string Timestamp = DateTime.Now.ToString("dd-MM-yyyy");
string key = "HKEY_LOCAL_MACHINE\\SOFTWARE\\"+Application.ProductName+"\\"+Application.ProductVersion;
string valueName = "Trial Period";
Microsoft.Win32.Registry.SetValue(key, valueName, Timestamp, Microsoft.Win32.RegistryValueKind.String);
Run Code Online (Sandbox Code Playgroud)
在Application.name
和Application.version
"文件夹"不存在呢.
我必须先创建它们吗?
另外,我正在64b Win版本上测试它,所以我想如果我想检查注册表中添加的密钥我必须专门检查32位注册表:C:\ Windows\SysWOW64\regedit.exe不要我?
Sil*_*ilx 64
首先,如果要在LocalMachine下编辑密钥,则必须在管理员权限下运行应用程序(更好地使用CurrentUser,它更安全或在安装程序中创建密钥).您还必须在编辑模式下打开密钥(OpenSubKey方法)以添加新的子密钥.我检查了代码,它的工作原理.这是代码.
RegistryKey key = Registry.LocalMachine.OpenSubKey("Software",true);
key.CreateSubKey("AppName");
key = key.OpenSubKey("AppName", true);
key.CreateSubKey("AppVersion");
key = key.OpenSubKey("AppVersion", true);
key.SetValue("yourkey", "yourvalue");
Run Code Online (Sandbox Code Playgroud)
您可以使用以下代码创建和打开所需的注册表项。
RegistryKey SoftwareKey = Registry.LocalMachine.OpenSubKey("Software",true);
RegistryKey AppNameKey = SoftwareKey.CreateSubKey("AppName");
RegistryKey AppVersionKey = AppNameKey.CreateSubKey("AppVersion");
AppVersionKey.SetValue("yourkey", "yourvalue");
Run Code Online (Sandbox Code Playgroud)
您基本上可以将 CreateSubKey 用于所有应用程序设置,因为它会打开写入访问的密钥(如果它已经存在),否则会创建它。不需要先创建,再打开。当您绝对确定密钥已经存在时,OpenSubKey 会派上用场,例如在这种情况下,使用“HKEY_LOCAL_MACHINE\SOFTWARE\”
还要检查您的注册表调用是否正在虚拟化.有关更多信息,请参见此处
如果您的应用程序不是UAC可识别的并且出于兼容性原因而发生,则可能发生
Real path
HKEY_LOCAL_MACHINE\Software\FooKey
Virtual path
HKEY_USERS\<User SID>_Classes\VirtualStore\Machine\Software\FooKey
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
87069 次 |
最近记录: |