2012-06-12 47 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

相关问题