Можно ли предположить, что путь C: \ WINDOWS \ system32 всегда существует? - PullRequest
9 голосов
/ 27 октября 2008

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

Спасибо. Ohad.

Ответы [ 6 ]

23 голосов
/ 27 октября 2008

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

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

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

16 голосов
/ 27 октября 2008

Нет, вы не можете этого предположить.

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

5 голосов
/ 27 октября 2008

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

3 голосов
/ 27 октября 2008

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

2 голосов
/ 27 октября 2008

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

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

0 голосов
/ 01 декабря 2008

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

текст ссылки

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...