Безопасно ли предполагать, что путь C:\WINDOWS\system32 всегда существует?

StackOverflow https://stackoverflow.com/questions/239209

  •  04-07-2019
  •  | 
  •  

Вопрос

В операционной системе с win 2000 или более поздней версии (на любом языке) могу ли я предположить, что этот путь всегда будет существовать?Например, я знаю, что в win xp на некоторых языках каталог "Program Files" имеет другое имя.Итак, верно ли это для папки System32?

Спасибо.Охад.

Это было полезно?

Решение

Вы определенно не можете предполагать, что:Windows может быть установлена на другую букву диска или в другой каталог.Например, на предыдущем рабочем КОМПЬЮТЕРЕ Windows была установлена в D:\WINNT.

Короткий ответ заключается в использовании вызова API GetSystemDirectory(), который вернет нужный вам путь.

Более длинный ответ - спросить:вам действительно нужно это знать?Если вы используете его для копирования файлов в каталог Windows, я бы посоветовал вам спросить, действительно ли вы хотите это сделать.Копирование в каталог Windows не рекомендуется, так как вы можете очень легко испортить работу других приложений.Если вы используете path для поиска библиотек DLL, почему бы просто не положиться на ОС, чтобы найти подходящую, не указывая путь?Если вы копаетесь в фрагментах файлов операционной системы, рассмотрите:сработает ли это в будущем?В общем, лучше явно не копаться в каталоге Windows, если вы хотите, чтобы ваша программа работала в будущих версиях Windows.

Другие советы

Нет, ты не можешь так предполагать.

Windows может быть установлена по другому пути.Одно из решений состоит в том, чтобы найти его, вызвав GetSystemDirectory (реализовано как часть Windows API).

Windows может быть установлена на другой жесткий диск и / или в другую папку.Используйте переменные среды %windir% или %systemroot%, чтобы перейти к папке Windows и добавить system32.Или используйте переменную %path%, обычно это первый ввод и предпочтительный метод поиска файлов, таких как dll AFAIK.Согласно комментариям:не слишком полагайтесь на то, что каталог system32 будет первым элементом.Хотя я думаю, что можно с уверенностью предположить, что это где-то в %path% .

Я бы использовал GetWindowsDirectory Каталог GetWindowsDirectory Win32 API, чтобы получить текущий каталог Windows, добавьте Система32 к нему, а затем проверьте, существует ли он.

Возможно, было бы безопаснее использовать переменную окружения "windir", а затем добавить "System32" в конец этого пути.Иногда Windows может находиться в другой папке или на другом диске, поэтому "windir" подскажет вам, где она находится.

Насколько я знаю, папка system32 всегда должна существовать в папке Windows.

К вашему сведению, но в среде сервера терминалов (например, Citrix) GetWindowsDirectory() может возвращать уникальный путь для удаленного пользователя.

текст ссылки

Поскольку все больше и больше компаний используют виртуализированные рабочие столы, разработчикам необходимо иметь это в виду.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top