У нас есть приложение, которое зависит от платформы .NET и при запуске проверяет, установлена ли платформа. На наших клиентских машинах это работает нормально, но на наших серверах под управлением Windows Server 2k3 проверка не выполняется. Когда мы смотрим на переменные среды, они правильно показывают, что каталог Windows - это C: \ Windows, и мы видим, что .NET правильно установлен там, но вызов Windows API (GetWindowsDirectory) из нашего приложения возвращает C: \ Programs and Settings \ [User Name] \ Windows, который недействителен и даже не существует. Есть ли в сервере 2k3 что-то, что могло бы вызвать такого рода неверные отчеты, или мне нужно искать в другом месте? Спасибо.
Лучше читать из переменной среды SystemRoot, чем использовать вызов Windows API. Пытаться string WindowsDir = System.Environment.GetEnvironmentVariable ("SystemRoot");
и посмотрите, как вы с этим справитесь.
Если вы звоните из нативного кода char *WindowsDir = getenv ("SystemRoot");
это то, что вы хотите.