用戶環境變量對機器上的每個用戶帳戶都是分開的。我們如何設置/獲取其他用戶在c#中的環境變量?
考慮下面的,我在登錄時userA
其中非管理員用戶帳戶,現在我想/通過使用userA
的上下文中運行的C#應用程序設置其他用戶(比如userB
)環境變量。
這可能嗎?如果是這樣,我怎麼能這樣做?
用戶環境變量對機器上的每個用戶帳戶都是分開的。我們如何設置/獲取其他用戶在c#中的環境變量?
考慮下面的,我在登錄時userA
其中非管理員用戶帳戶,現在我想/通過使用userA
的上下文中運行的C#應用程序設置其他用戶(比如userB
)環境變量。
這可能嗎?如果是這樣,我怎麼能這樣做?
環境變量存儲在註冊表中,因此要爲其他用戶更改它們,您必須導入其註冊表配置單元。
用戶的關鍵瓦爾是
HKEY_CURRENT_USER\Environment
和系統的關鍵瓦爾是
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
所以,如果你輸入當前用戶分羣你可以改變它爲其他用戶,或者用於機器變量的變更將從任何管理員賬戶更改密鑰HKLM
。
雖然這是凌亂的,我不會建議你這樣做。
或者你可以使用一些P/Invoke來使用Impersonation.
爲什麼你想這麼做?這似乎是一個糟糕的應用程序設計 – pylover
@pylover:我執行不同的腳本frm我的c#應用程序。腳本將在不同的用戶上下文中執行。我想在c#appln和腳本之間共享環境變量。腳本將修改env var值,並且我將在c#appln.also中更改值腳本類型不固定(可以是任何.cmd,.vbs,.ps1) – sailer