首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >没有添加C#环境变量值

没有添加C#环境变量值
EN

Stack Overflow用户
提问于 2015-08-07 06:10:11
回答 2查看 2K关注 0票数 1

我试图为Path环境变量添加一个值,但我似乎无法让它工作起来。我已经经历了几个类似的问题,我确信我有完全相同的代码,但是它仍然不会添加变量,或者我看不到它。我已经检查了管理员和本地用户帐户的更改。我在应用程序运行(调试)期间和之后都进行了检查。我还完全关闭了VS2013并进行了检查。

这是我正在使用的代码

代码语言:javascript
复制
string path = @"C:\Users\bono\Documents\Visual Studio 2013\Projects\3D-Scanner\AddEnviromentToPath\bin\Debug\AddEnviromentToPath.exe";
ProcessStartInfo process_start_info = new ProcessStartInfo();
process_start_info.FileName = path;
process_start_info.Verb = "runas";
process_start_info.WindowStyle = ProcessWindowStyle.Normal;
process_start_info.UseShellExecute = true;
process_start_info.Arguments = PATH_TO_PCL;

Process.Start(process_start_info); //Process that handles the adding of the value

AddEnviromentToPath程序:

代码语言:javascript
复制
class Program {
    static void Main(string[] args) {
        //Just to make sure we're adding both
        AddToEnvironmentPath(args[0], EnvironmentVariableTarget.User);
        AddToEnvironmentPath(args[0], EnvironmentVariableTarget.Machine);
    }

    static void AddToEnvironmentPath(string pathComponent, EnvironmentVariableTarget target) {
        string targetPath = System.Environment.GetEnvironmentVariable("Path", target) ?? string.Empty;

        if (!string.IsNullOrEmpty(targetPath) && !targetPath.EndsWith(";")) {
            targetPath = targetPath + ';';
        }

        targetPath = targetPath + pathComponent;
        Environment.SetEnvironmentVariable("Path", targetPath, target);
    }
}

请注意,我正在以标准用户的身份运行VS2013和主应用程序。当AddEnviromentToPath程序运行时,我会得到一个管理验证面板。我用一个管理帐户登录这里。

编辑:

其他人似乎让它使用基本相同的代码:

如何在C#中获取和设置环境变量?

没有使用c#在windows中设置环境。我哪里出问题了?

EN

回答 2

Stack Overflow用户

发布于 2015-08-07 06:23:30

假设Environment.SetEnvironmentVariable在幕后调用Win32 SetEnvironmentVariable函数,本说明可能适用:

为当前进程设置指定环境变量的内容. 该函数不影响系统环境变量或其他进程的环境变量。

如果要更改全局环境变量并让现有进程注意到它,则需要:

  • 将其保存到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment下的注册表中
  • 使用WM_SETTINGCHANGE消息通知现有进程更改。

有关更多信息,请参见MSDN 环境变量文档。

票数 1
EN

Stack Overflow用户

发布于 2015-08-07 08:09:03

ProcessStartInfo去营救!

您需要查看这些文档:

https://msdn.microsoft.com/en-us/library/system.diagnostics.processstartinfo.environmentvariables%28v=vs.110%29.aspx

解决你关切问题的关键案文如下:

虽然不能设置EnvironmentVariables属性,但可以修改属性返回的StringDictionary。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31870827

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档