Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.07.11;
Скачать: CL | DM;

Вниз

Documents and Settings   Найти похожие ветки 

 
Германн ©   (2004-05-26 01:34) [0]

Помогите неучу определить путь к сабжу.
Поясню вопрос. Никогда ранее не занимали меня подобные вопросы. Но вчера моя дочка спросила - можно ли ее подружке передать игру, которая есть у нас на компьютере. Проверил, убедился, что игрушка не требует установки. Предложил записать ее на "CD-болванке"(их есть у меня). Записал и, учитывая юзерский уровень подружки и ее семьи, сверстал на скорую руку Autorun, что бы не было проблем с запуском. Но когда приблизилось время передачи болванки подружке, Ч... дернул меня сказать дочке, что на этой болванке есть еще место для других игр. Через 15 минут мне заказали добавить еще одну игрушку, но поставили условие, что отдать диск нужно через минимум минут. Я добавил ее, изменил и перекомпилировал Autorun, но впопыхах не заметил, что добавленная игрушка читает и сохраняет файл с результатами в "текущей директории". Естественно на CD такой вариант - не возможен. Стал думать куда поместить "файл результатов". После предварительного анализа системного диска выбрал каталог "Documents and Settings\...\ApplicationData".
Но вот как получить его имя для данного пользователя и для всех пользователей, причем (но не обязательно) для всех ОС - это вопрос!

Может быть я не прав в в выборе каталога "Documents and Settings"? Тогда что вы порекомендуете?


 
GuAV ©   (2004-05-26 02:34) [1]

procedure TForm1.Button1Click(Sender: TObject);
var
 P: PItemIDList;
 S: array[0..max_path] of Char;
 ShellMalloc: IMalloc;
begin
if (ShGetMalloc(ShellMalloc) = S_OK) and (ShellMalloc <> nil) then
 begin
   SHGetSpecialFolderLocation(Handle,CSIDL_PERSONAL,P);
   SHGetPathFromIDList(P,S);
   ShowMessage(S);
   ShellMalloc.Free(P);
 end;
end;

Вообще RTFM Shell"s Namespace


 
Vasya.ru   (2004-05-27 00:18) [2]

function MyGetUserName : string;
var Size         : cardinal;
  PRes         : PChar;
  BRes         : boolean;
begin
Size := MAX_COMPUTERNAME_LENGTH + 1;
PRes := StrAlloc(Size);
BRes := GetUserName(PRes, Size);
if BRes then result := StrPas(PRes) else result := "default";
end;
Возвращает имя текущего юзера


 
Германн ©   (2004-05-27 02:19) [3]

2 Vasya.ru   (27.05.04 00:18) [2]
Спасибо, но имя юзера мне "до лампочки".

2 GuAV ©   (26.05.04 02:34) [1]
Вот тут большое спасибо! за "Shell"s Namespace". Проглядел бегло данный раздел хелпа. Буду, по мере необходимости, читать его подробно.
Но вот список параметров nFolger привел меня в некое уныние. "Мои документы" для данного пользователя у меня в кармане. Ну а прочие? В "Documents and Settings" есть ещё куча директорий(папок).
Если кто знает их значение или знает как их получить - откликнитесь пожалуйста. Достаточно ссылки на пункт в msdn.
Кроме того, очень желательны ссылки на информацию о современных принципах установки программ. Конкретнее - о рекомендуемых местах хранения рабочей информации для программы с учетом того, что вышеописанная может находиться на ReadOnly носителе.


 
GuAV ©   (2004-05-27 02:40) [4]

[1] - Малость перемудрил. Есть SHGetSpecialFolderPath.
Описания нет в win32.hlp есть в MSDN.


> Если кто знает их значение или знает как их получить - откликнитесь
> пожалуйста. Достаточно ссылки на пункт в msdn.

CSIDL

> Конкретнее - о рекомендуемых местах хранения рабочей информации
> для программы

Имхо, CSIDL_APPDATA, CSIDL_xxxxx_APPDATA


 
Германн ©   (2004-05-27 02:57) [5]

2 GuAV ©   (27.05.04 02:40) [4]
Еще раз спасибо. Буду искать и читать.


 
Kair ©   (2004-05-27 09:19) [6]

Так, может это пригодится:

RootKey = HKey_Current_User

Software -> Microsoft -> Windows -> Current Version -> Explorer -> Shell Folders

Не знаю как там в Win98, а на Win2k есть...


 
GuAV ©   (2004-05-27 14:01) [7]


> Не знаю как там в Win98, а на Win2k есть...

В Win98 есть

[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\explorer\Shell Folders]
"Common Desktop"="C:\\WIN98\\All Users\\Рабочий стол"
"Common Startup"="C:\\WIN98\\All Users\\Главное меню\\Программы\\Автозагрузка"
"Common AppData"="C:\\WIN98\\All Users\\Application Data"
"Personal"="D:\\DOC\\Мои документы\\"


Всё же, имхо, [4] - лучше, т.к. это документировано и для любой shell папки.


 
GuAV ©   (2004-05-27 18:05) [8]


> В Win98 есть
>
>[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\explorer\Shell
> Folders]

...и в HKey_Current_User тоже есть (другие).



Страницы: 1 вся ветка

Текущий архив: 2004.07.11;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.04 c
4-1085945946
Остап
2004-05-30 23:39
2004.07.11
закрытие процесса


14-1087756965
Мазут Береговой
2004-06-20 22:42
2004.07.11
Ещё один веселый анекдот! :-)))))


14-1087923648
Piter
2004-06-22 21:00
2004.07.11
Ура! Я избавился от глюков...


1-1087909900
DN
2004-06-22 17:11
2004.07.11
Application.Hint?


14-1087803385
WondeRu
2004-06-21 11:36
2004.07.11
Помогите решить задачку!