2011-10-29 74 views
2

我想從註冊表中讀取所有環境變量,並使用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文件)複製到另一臺計算機才能正確運行它?是否可以通過編譯將信息放入exe文件?

+1

您需要忘記ClickOnce。 –

+0

我該如何禁用它? – stormsam

+0

您不禁用它,您根本不使用它來部署您的產品。並使用由安裝和部署項目創建的常規安裝程序。在Express版中不可用。 –

回答

1

如果你想在安裝過程中提升,那麼你不能使用ClickOnce。這是一個設計選擇。因此,您的選擇是:

  1. 使用標準的安裝包,它可以讓你以顯示UAC提升對話框。
  2. 修改用戶的PATH環境而不是系統範圍的變量。該選項與ClickOnce的每個用戶理念完美兼容。