Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

DNK
I. DNK
Баллы: 5

Подробнее »



Вопрос # 1 511

/ вопрос открыт /

Здравствуйте, эксперты!
Как найти путь к С:\Documents and Settings\All Users\Application Data\, если буква диска с системой неизвестна? Спасибо!

Евгений Eklmn Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: Евгений Eklmn (статус: Посетитель)
Вопрос отправлен: 20 апреля 2008, 15:46
Состояние вопроса: открыт, ответов: 4.

Ответ #1. Отвечает эксперт: min@y™

Нупример, есть такая функция: GetSystemDirectory(). Из неё можно извлечь букву диска.

Цитата:


The GetSystemDirectory function retrieves the path of the Windows system directory. The system directory contains such files as Windows libraries, drivers, and font files.

UINT GetSystemDirectory(

LPTSTR lpBuffer, // address of buffer for system directory
UINT uSize // size of directory buffer
);


Parameters

lpBuffer

Points to the buffer to receive the null-terminated string containing the path. This path does not end with a backslash unless the system directory is the root directory. For example, if the system directory is named WINDOWS\SYSTEM on drive C, the path of the system directory retrieved by this function is C:\WINDOWS\SYSTEM.

uSize

Specifies the maximum size of the buffer, in characters. This value should be set to at least MAX_PATH.

Ответ отправил: min@y™ (статус: Доктор наук)
Время отправки: 20 апреля 2008, 16:12

Ответ #2. Отвечает эксперт: Вадим К

Здравствуйте, Трофимов Евгений!
Узнавать букву диска, что бы получить путь к этому каталогу - неверно, так нельзя делать. Например в немецкой локализации этот путь будет выглядеть очень похоже, но немного не так. А в Висте ещё чуточку по другому. И ваша программа будет работать лишь на ограниченном колечестве компьютеров.
Но выход есть. Есть статья на этом сайте, которую я написал - Сохранение настроек читаем, медитируем. И пусть работа вашей программы не зависит от мух в голове пользователя.
P.S. Кстати, Microsoft не гарантирует, что каталог Windows и Document and Setting будут на одном диске, и что они будут именно так называться:)

Ответ отправил: Вадим К (статус: Академик)
Время отправки: 20 апреля 2008, 18:28

Ответ #3. Отвечает эксперт: ANBsoft

Здравствуйте, Трофимов Евгений!
Нпраимер при запуске программ помогает следующая конструкция:
%ProgramFiles% - это для папки "Program Files" - остальное по аналогии.
Я таким образом запускаю коммандные файлы модернизации базы данных,
которые работают независимо от того, на каком диске установлена система.
Пример:
"%ProgramFiles%\Firebird\Firebird_1_5\bin\isql"+параметры - главное чтобы Firebird стоял в стандартной папке.

Ответ отправил: ANBsoft (статус: Студент)
Время отправки: 21 апреля 2008, 00:20

Ответ #4. Отвечает эксперт: Feniks

Здравствуйте, Трофимов Евгений!
А еще можно прочитать ключик в реестре
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders
и его параметр Common AppData.
И где-то как-то проскакивала API-функция, которая возвращала такие папки...

Ответ отправил: Feniks (статус: Бакалавр)
Время отправки: 21 апреля 2008, 18:11


Мини-форум вопроса

Всего сообщений: 2; последнее сообщение — 26 апреля 2008, 15:49; участников в обсуждении: 2.
Евгений Eklmn

Евгений Eklmn (статус: Посетитель), 26 апреля 2008, 15:31 [#1]:

Да, есть такая функция (не помню как она называется), но она возвращает папку рабочего стола, папку меню пуска, и т.д. но не Application Data. Да и SHGetFolderPath что-то не работает, может модуль нужно подключить? (Delphi пишет: Undeclared identifier: 'SHGetFolderPath').
Генерация случайных чисел - слишком важный вопрос, чтобы оставлять его на волю случая. (Роберт Ковзю, Окриджская лаборатория)
Dron

Dron (статус: Студент), 26 апреля 2008, 15:49 [#2]:

Функция SHGetFolderPath() описана в модуле ShlObj.pas.
С уважением.

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 18 августа 2017, 02:33
Выполнено за 0.03 сек.
Рейтинг@Mail.ru