C#:无法在Windows服务内的当前进程中设置环境变量

C#:无法在Windows服务内的当前进程中设置环境变量,c#,.net,windows,c#-4.0,windows-services,C#,.net,Windows,C# 4.0,Windows Services,我有一个在域帐户(不是管理员)下运行的Windows服务 我正在Windows服务中启动一个线程,该线程在内部创建一个任务。现在,任务尝试使用 Environment.SetEnvironmentVariable("var_name","value"); 这时我得到以下错误: System.Security.SecurityException: Requested registry access is not allowed. at Microsoft.Win32.Regis

我有一个在域帐户(不是管理员)下运行的Windows服务

我正在Windows服务中启动一个线程,该线程在内部创建一个任务。现在,任务尝试使用

Environment.SetEnvironmentVariable("var_name","value");
这时我得到以下错误:

    System.Security.SecurityException: Requested registry access is not allowed. 
    at Microsoft.Win32.RegistryKey.OpenSubKey(string name, Boolean writable)
    at System.Environment.SetEnvironmentVariable(String variable, String value, EnvironmentVariableTarget target)
....... followed by the code Stack Trace.
有人能帮忙吗


注意:由于风险团队的限制,我无法在机器级别设置环境,也无法在用户级别设置环境,因为用户被多个应用程序使用,变量值可能会冲突(因此不建议)。

可能重复@Sinatr我没有编辑注册表,因为我正在流程级别设置环境变量。。我感兴趣的问题是,我上面解释的进程/线程/任务场景是否会对设置环境变量产生影响;当它从任务中设置时。提示:查看调用堆栈,在那里调用了哪个方法以及它的作用?@Sinatr它已经在较低的环境中工作了。。。但在UAT中失败,这表明它可能与运行它的用户的访问权限有关。@Sinatr解决了这个问题,但我不知道为什么要设置环境变量,如environment.SetEnvironmentVariable(“var_name”,“value”,EnvironmentVariableTarget.Process);