gpt4 book ai didi

c# - 未使用 c# 在 Windows 中设置环境。我哪里错了?

转载 作者:可可西里 更新时间:2023-11-01 11:07:16 24 4
gpt4 key购买 nike

string path = System.Environment.GetEnvironmentVariable("Path");
Console.WriteLine(path);
if (!path.Contains("C:\ccstg"))
{
if (!path.EndsWith(";"))
path = path + ';';
var v=@"C:\ccstg;";
path = path + v;
Environment.SetEnvironmentVariable("Path",path);
Console.WriteLine(path);
Console.WriteLine("Path Set");
Console.ReadKey();
}

我正在尝试使用 C# 设置路径环境变量,我能够获得“路径”,但在设置时未设置它。它也没有显示任何错误。我也试过以管理员身份运行它,没有帮助。

有人知道我在这里遗漏了什么吗?

最佳答案

首先,您需要更加小心地处理字符串文字,您发布的代码将无法编译,因为“\c”不是有效的字符串文字转义序列。修复:

        string newPathComponent = @"C:\ccstg";
if (!path.Contains(newPathComponent))
{
if (!path.EndsWith(";"))
path = path + ';';
path = path + newPathComponent;
Environment.SetEnvironmentVariable("Path", path);

现在,此代码可以工作并在进程 期间设置路径。如果要永久设置路径,需要使用Environment.SetEnvironmentVariable Method (String, String, EnvironmentVariableTarget) ,例如:

            var target = EnvironmentVariableTarget.User; // Or EnvironmentVariableTarget.Machine
Environment.SetEnvironmentVariable("Path", path, target);

更多here .

但是,如果这样做,则必须小心地将路径组件仅添加到与该 EnvironmentVariableTarget 关联的路径中。那是因为 %PATH% 环境变量实际上是 combined from several sources .如果您不小心,您可能会将组合路径复制到 EnvironmentVariableTarget.MachineEnvironmentVariableTarget.User 源中 - 您不想这样做。

因此:

    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);
}

最后,如果您在 Visual Studio Hosting Process 中运行对于调试,我观察到如果您使用 Environment.SetEnvironmentVariable("Path",path, EnvironmentVariableTarget.User),在您退出并重新启动 visual studio 之前,不会获取对永久环境的更改。我认为 visual studio 托管过程有些奇怪。要处理这种奇怪的情况,您可能需要同时执行以下操作:

AddToEnvironmentPath(@"C:\ccstg", EnvironmentVariableTarget.User)
AddToEnvironmentPath(@"C:\ccstg", EnvironmentVariableTarget.Process)

关于c# - 未使用 c# 在 Windows 中设置环境。我哪里错了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27286713/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com