编辑注册表中的环境变量

3
我希望您能使用C#在Visual Studio 2010 Express中从注册表读取所有环境变量,并为其设置新值。因此,我读取本地计算机的子键:
SYSTEM\CurrentControlSet\Control\Session Manager\Environment

这里涉及到Path的值。
在读取Path的值时:

reg = Registry.LocalMachine.OpenSubKey(SUB_KEY_PATH, true);

我遇到了一个异常,表示我没有权限。

因此我在清单文件中设置了相应的值:

<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />

但现在我无法编译我的项目,因为ClickOnce不支持它。 如何使用requireAdministrator安全级别编译项目? 我找到的一个解决方案是先以非requireAdministrator级别编译它,然后再更改myproject.exe.manifest中的值。我看到的是正确的吗?我是否总是需要将两个文件(清单和exe文件)复制到另一台计算机上才能正确运行它?是否可以通过编译将信息放入exe文件中?


1
你需要忘记ClickOnce。 - undefined
你不需要禁用它,只是不使用它来部署你的产品。而是使用由安装和部署项目创建的常规安装程序。这在Express版本中不可用。 - undefined
1个回答

2

如果您想在安装过程中提升权限,那么就不能使用ClickOnce。这是一个设计选择。因此,您的选项如下:

  1. 使用标准安装包,这将允许您显示UAC提升对话框。
  2. 修改用户的PATH环境变量而不是系统范围内的变量。这个选项与ClickOnce的每个用户哲学完全兼容。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接