更新EnvironmentVariable - PATH后 - 我仍然在Windows 2003 Server上获得FileNotFoundException

时间:2011-04-05 22:49:46

标签: c# windows-server-2003 environment-variables console-application

我刚开始使用新产品,我想我不理解PATH变量。我的文档说要更新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

在上面成功运行后,我尝试使用控制面板永久更改PATH:系统:高级:环境变量。我通过检查HKLM \ SYSTEM \ CurrentControlSet \ Control \ Session Manager \ Environment中的注册表来验证上述PATH。我将以下内容视为PATH值中的最后一个条目:     ; C:\ Program Files \ Hewlett-Packard \ HP TRIM \

我认为这会在PATH的末尾永久地设置它,但是当我运行上面的控制台程序并注释掉几行时,我得到了FileNotFoundException(见下文)。我很困惑如何在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();     // 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();
    }
}
}

1 个答案:

答案 0 :(得分:1)

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