![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Получение каталога Windows в NT [D7, WinXP]
Registr © (2004-08-30 05:59:00)Как можно проще получить рабочий каталог Windows в Win NT, функция GetWindowsDerectory даёт полную фигню, записанную в реестре: типа Document and Setting\Administrator\Windows.
%SystemRoot% во многих случаях не катит. Что делать, как быть?
VMcL (2004-08-31 10:16:00) [1]>> Registr (31.08.04 01:39) [6]
> Мне нужна папка, куда реально установлена Windows. Универсальную я пока не нашёл
Ссылку на выпрямитель дать?
Registr (2004-08-31 01:39:00) [2]Мне нужна папка, куда реально установлена Windows. Универсальную я пока не нашёл, для Win9x действует GetWindowsDirectory(s, SizeOf(s));, а для WinNT
FillChar(PathArray,SizeOf(PathArray), #0);
ExpandEnvironmentStrings('%SystemRoot%',PathArray, 256);
Result := Format('%s',[PathArray]);, то что здесь предлагалось, я попробую, спасибо.
Дмитрий Ботвин (2004-08-30 16:09:00) [3]Согласен FreeMem надо бы добавить....
VMcL (2004-08-30 15:18:00) [4]>> Дмитрий Ботвин (30.08.04 14:33) [2]
Освобождение памяти возложим на А. С. Пушкина?
Дмитрий Ботвин (2004-08-30 14:35:00) [5]Или же как и написал YuRock используй фуекции GetSystemDirectory; SHGetSpecialFolderLocation
Дмитрий Ботвин (2004-08-30 14:33:00) [6]А что, разве функция GetWindowsDirectory не пашет? Вот сам
попробуй....
function GetWinDir(): string;
var WindirP: PChar;
Res: Cardinal;
begin
Result:='Unknown';
WinDirP := StrAlloc(MAX_PATH);
Res := GetWindowsDirectory(WinDirP, MAX_PATH);
if Res > 0 then Result:= StrPas(WinDirP);
end;
YuRock (2004-08-30 08:12:00) [7]GetWindowsDerectory отлично работает под 95/98/NT/2k/XP/03
Я проверял везде.
Другое дело - что ты понимаешь под каталогом Windows...
Из хелпа: "The Windows directory is the directory where an application should store initialization and help files. If the user is running a shared version of Windows, the Windows directory is guaranteed to be private for each user."
Так что GetWindowsDerectory возвращает тебе все правильно.
Если же тебе эта папка нужна для других целей - ищи ее соответствующими способами.
См. GetSystemDirectory; SHGetSpecialFolderLocation; FindFirstFile/FindNextFile...