在注册表中编辑环境变量

时间:2011-10-29 14:03:43

标签: c# windows registry clickonce environment-variables

我想从注册表中读取所有环境变量,并在visual studio 2010 express中使用c#为其设置新值。

因此我读了本地机器的子键:

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文件中?

1 个答案:

答案 0 :(得分:1)

如果要在安装期间提升,则无法使用ClickOnce。这是一个设计选择。因此,您的选择是:

  1. 使用标准安装包,可以显示UAC提升对话框。
  2. 修改用户的PATH环境而不是系统范围的变量。此选项与ClickOnce的每用户理念完全兼容。