如何允许非管理员用户写入注册表项HKEY_LOCAL_MACHINE \ SOFTWARE \ SWname \ Licenses

时间:2014-03-10 15:59:09

标签: c# windows-installer registrykey

我使用Windows Installer部署了一个软件。

在Windows XP上,当我使用非管理员用户安装软件包时,它会询问管理员是否正确。 然后我单击以管理员身份运行并等待安装完成。

然后,如果我(非管理员用户)想要写入注册表项“HKEY_LOCAL_MACHINE \ SOFTWARE \ SWname \ Licenses”,则软件会抛出异常。访问被拒绝。

我在源代码中使用了以下内容:

RegistryKey rk= Registry.LocalMachine.CreateSubKey("SOFTWARE\\"+swName+"\\Licenses", RegistryKeyPermissionCheck.ReadWriteSubTree);

但如果我是非管理员用户,仍然无法访问注册表项。

如何允许非管理员用户对我的软件下的注册表项具有写入权限?喜欢添加许可证吗?

1 个答案:

答案 0 :(得分:0)

首先要指出的是为什么你有自定义操作而不是使用Windows Installer注册表?每台计算机的安装是“托管”或“受信任”,这意味着后续修复/重新安装将自动提升并有权更新注册表。

您可以使用Windows Installer中的LockPermissions表来放宽该注册表项的权限。假设这样做是安全和适当的。