C# 更新EnvironmentVariable-PATH之后,我在Windows2003服务器上仍然收到一个FileNotFoundException

C# 更新EnvironmentVariable-PATH之后,我在Windows2003服务器上仍然收到一个FileNotFoundException,c#,windows-server-2003,environment-variables,console-application,C#,Windows Server 2003,Environment Variables,Console Application,我只是从一个新产品开始,我想我不理解PATH变量。我的文档说要像这样更新路径,我在一个小控制台应用程序中成功地做到了: using HP.HPTRIM.SDK; namespace TestSDKforTRIM71 { class Program { static void Main(string[] args) { string trimInstallDir = @"C:\Program Files\Hewlett-Packard\HP TRIM";

我只是从一个新产品开始,我想我不理解PATH变量。我的文档说要像这样更新路径,我在一个小控制台应用程序中成功地做到了:

using HP.HPTRIM.SDK;

namespace TestSDKforTRIM71
{
class Program
{
    static void Main(string[] args)
    {
        string trimInstallDir = @"C:\Program Files\Hewlett-Packard\HP TRIM";
        string temp = Environment.GetEnvironmentVariable("PATH") + ";" + trimInstallDir;
        Environment.SetEnvironmentVariable("PATH", temp);
        DoTrimStuff();
    }
    public static void DoTrimStuff()
    {
        using (Database db = new Database())
        {
            db.Connect();
            Console.WriteLine(db.Id);
        }
        Console.ReadKey();
    }
}
}
在上面的项目中,我参考了HP.HPTRIM.SDK,它位于: C:\Program Files\Hewlett-Packard\HP TRIM\HP.HPTRIM.SDK.dll

在上述操作成功运行后,我尝试使用控制面板:System:Advanced:Environment Variables永久更改路径。我通过检查HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment上的注册表来验证上述路径。我将以下内容视为路径值中的最后一项: ;C:\Program Files\Hewlett-Packard\HP TRIM\

我原以为这会永久性地将其设置在路径的末尾,但当我运行上面的控制台程序并注释掉几行时,我得到了FileNotFoundException(见下文)。我很困惑如何让这条路走下去,不必再担心了

using HP.HPTRIM.SDK;

namespace TestSDKforTRIM71
{
class Program
{
    static void Main(string[] args)
    {
        //string trimInstallDir = @"C:\Program Files\Hewlett-Packard\HP TRIM";
        //string temp = Environment.GetEnvironmentVariable("PATH") + ";" + trimInstallDir;
        //Environment.SetEnvironmentVariable("PATH", temp);
        DoTrimStuff();     // without setting the PATH this fails despite being in REGISTRY...
    }
    public static void DoTrimStuff()
    {
        using (Database db = new Database())
        {
            db.Connect();
            Console.WriteLine(db.Id);
        }
        Console.ReadKey();
    }
}
}

只有不从父进程继承其环境的新启动进程才会具有更新的路径。您必须至少重新启动VisualStudio托管进程,关闭并重新打开您的解决方案。要覆盖所有可能的角落,请注销并重新登录,以便Windows资源管理器(以及Visual Studio)也开始使用更新的环境。

谢谢。解释得也很好。