![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Не находится существующий файл
Олег Г. © (2015-04-19 11:07:00)Всем привет. Странная проблема. В Windows 7 есть программа - Записки. Она расположена в
C:\Windows\System32\StikyNot.exe. Ни FileExists ни GetFileAttributes не могут найти этот файл. Почему?
if FileExists('C:\Windows\System32\StikyNot.exe') then
ShowMessage('файл существует')
else
ShowMessage('файл не найден');
if GetFileAttributes('C:\Windows\System32\StikyNot.exe') <> INVALID_FILE_ATTRIBUTES then
ShowMessage('Файл существует')
else
ShowMessage(SysErrorMessage(GetLastError));
Rouse_ (2015-04-21 17:42:00) [1]Вообще достаточно сказать Wow64DisableWow64FsRedirection, но есть нюанс, который стоит учесть: http://blog.not-a-kernel-guy.com/2009/04/03/482
Kilkennycat (2015-04-19 22:01:00) [2]а их не проще искать по типу %альяс_системной_папки% ?
DVM (2015-04-19 19:58:00) [3]
> Олег Г. (19.04.15 11:41) [4]
И для 64 бит и для 32 бит программ доступ к папке C:\Windows\System32\ (той что видят 64 бит программы) может быть получен по пути C:\Windows\Sysnative\
Олег Г. (2015-04-19 13:17:00) [4]Проблема была в том, что в папке SysWOW64 нет файла StikyNot.exe, соответственно, если вызов FileExists/GetFileAttributes/FindFirstFile из
32-битной программы, то путь к этому файлу найти не удается. Однако, в 64-битной программе все ок (в [4] вызов FindFirstFileW был сделан из 64-битной программы, поэтому файл нашелся).
Олег Г. (2015-04-19 11:41:00) [5]Проверил через FindFirstFile - находит:
hSearch: THandle;
FileData: WIn32_FIND_DATAW;
begin
hSearch := FindFirstFileW('C:\Windows\System32\StikyNot.exe', FileData);
if hSearch <> INVALID_HANDLE_VALUE then
begin
ShowMessage(FileData.cFileName);
Winapi.Windows.FindClose(hSearch);
end;
end;
Олег Г. (2015-04-19 11:30:00) [6]Попробовал скомпилировать 64-битную программу и вызвал обе функции с параметром 'C:\Windows\System32\StikyNot.exe' - результат тот же.
Олег Г. (2015-04-19 11:27:00) [7]
> junglecat © (19.04.15 11:25) [1]
>
> C:\Windows\SysWOW64\StikyNot.exe ?
Так тоже не находит.
junglecat (2015-04-19 11:25:00) [8]C:\Windows\SysWOW64\StikyNot.exe ?