|
Вопрос # 915/ вопрос открыт / |
|
Здравствуйте!
Как использовать %SystemRoot% в программе?
То есть надо открыть файл из этого какталога. Путь в виде \'C:\Windows\' не известен программе. Чтение из реестра ключа Software\Microsoft\Windows NT\CurrentVersion\SystemRoot нельзя использовать, так как там может быть ложное значение!?
 |
Вопрос задал: Ilia Ermakov (статус: 1-ый класс)
Вопрос отправлен: 11 сентября 2007, 22:36
Состояние вопроса: открыт, ответов: 1.
|
Ответ #1. Отвечает эксперт: Feniks
Здравствуйте, Ilia Ermakov!
Это очень легко. Есть пару функций, которые возвращают пути к папкам Windows и Windows\System32. См. пример в приложении.
Приложение: Переключить в обычный режим- Type TSystemPath=(Desktop,StartMenu,Programs,Startup,Personal, WinRoot, WinSys,Temp);
- ...
- Function GetSystemPath(SystemPath:TSystemPath):string;
- var p:pchar;
- begin
- with TRegistry.Create do
- try
- RootKey := HKEY_CURRENT_USER;
- OpenKey('\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders', True);
- case SystemPath of
- Desktop: Result:=ReadString('Desktop');
- StartMenu:Result:=ReadString('Start Menu');
- Programs:Result:=ReadString('Programs');
- Startup:Result:=ReadString('Startup');
- Personal:Result:=ReadString('Personal');
- WinRoot:begin
- GetMem(p,255);
- GetWindowsDirectory(p,254);
- result:=Strpas(p);
- Freemem(p);
- end;
- WinSys:begin
- GetMem(p,255);
- GetSystemDirectory(p,254);
- result:=Strpas(p);
- Freemem(p);
- end;
- Temp: begin
- GetMem(p,255);
- GetTempPath(254, p);
- result:=Strpas(p);
- Freemem(p);
- end;
- end;
- finally
- CloseKey;
- free;
- end;
- if (result<>'') and (result[length(result)]<>'\') then result:=result+'\';
- end;
 |
Ответ отправил: Feniks (статус: Бакалавр)
Время отправки: 12 сентября 2007, 15:21
Оценка за ответ: 5
|
Мини-форум вопроса
Мини-форум пуст.
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|