После обновления EnvironmentVariable - PATH - я все еще получаю FileNotFoundException на Windows 2003 Server

Я только начинаю работать с новым продуктом и, наверное, не понимаю переменную 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: ;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();
    }
}
}

person John Adams    schedule 05.04.2011    source источник


Ответы (1)


Только недавно запущенные процессы, которые не наследуют свою среду от своего родителя, будут иметь обновленный PATH. Вам придется как минимум перезапустить процесс размещения Visual Studio, закрыть и снова открыть решение. Чтобы охватить все возможные углы, выйдите из системы и войдите снова, чтобы проводник Windows (и, следовательно, Visual Studio) также начал использовать обновленную среду.

person Hans Passant    schedule 05.04.2011
comment
Спасибо. Тоже очень красивое объяснение. - person John Adams; 06.04.2011