编辑registry中的环境variables

我想从registry中读取所有的环境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的项目? 我find的一个解决scheme是编译它没有requireAdministrator级别,然后我改变myproject.exe.manifest中的值。 我看到它是正确的,我总是不得不复制两个文件(清单和exe文件)到另一台计算机正确运行? 是否可以通过编译将信息放在exe文件中?

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

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