2012-06-12 77 views
0

用戶環境變量對機器上的每個用戶帳戶都是分開的。我們如何設置/獲取其他用戶在c#中的環境變量?

考慮下面的,我在登錄時userA其中非管理員用戶帳戶,現在我想/通過使用userA的上下文中運行的C#應用​​程序設置其他用戶(比如userB)環境變量。

這可能嗎?如果是這樣,我怎麼能這樣做?

+4

爲什麼你想這麼做?這似乎是一個糟糕的應用程序設計 – pylover

+0

@pylover:我執行不同的腳本frm我的c#應用程序。腳本將在不同的用戶上下文中執行。我想在c#appln和腳本之間共享環境變量。腳本將修改env var值,並且我將在c#appln.also中更改值腳本類型不固定(可以是任何.cmd,.vbs,.ps1) – sailer

回答

1

環境變量存儲在註冊表中,因此要爲其他用戶更改它們,您必須導入其註冊表配置單元。

用戶的關鍵瓦爾是

HKEY_CURRENT_USER\Environment

和系統的關鍵瓦爾是

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment

所以,如果你輸入當前用戶分羣你可以改變它爲其他用戶,或者用於機器變量的變更將從任何管理員賬戶更改密鑰HKLM

雖然這是凌亂的,我不會建議你這樣做。

或者你可以使用一些P/Invoke來使用Impersonation.

+0

每個用戶都有一個獨立的HKEY_CURRENT_USER註冊表tree.any用戶可能沒有更改其他用戶的條目 – pylover

+0

我不確定你的意思。你在說'HKEY_USERS \ S-1-5 ...'鍵嗎? –

+0

@Bail C:HKEY_CURRENT_USER只有當前用戶的evn var值。我想修改其他用戶的env var值 – sailer

相關問題