Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2004.07.11;
Скачать: [xml.tar.bz2];

Вниз

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 вся ветка

Форум: "WinAPI";
Текущий архив: 2004.07.11;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.039 c
1-1088523699
dimon_programmer
2004-06-29 19:41
2004.07.11
Извлечь DateTime из FTLastAcsessed


1-1088577253
denmin
2004-06-30 10:34
2004.07.11
Как скопировать файлы по маске?


14-1087988676
Gosha222
2004-06-23 15:04
2004.07.11
Переворачивание картинки


3-1087375902
ol
2004-06-16 12:51
2004.07.11
как узнать имена таблиц


14-1087913545
artis
2004-06-22 18:12
2004.07.11
Создание патча





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский