![]() |
|
|
#1
|
|||
|
|||
|
собственно вопрос, при сохранении
ts.SaveToFile('C:\Windows\System32\GroupPolicy\hel lo.txt'); сохраняет этот файл сюда "C:\Windows\SysWOW64\GroupPolicy" при попытке сохранить через СейвДиалог1 показывает то что находится в каталоге "C:\Windows\SysWOW64\GroupPolicy" хотя пусть в диалоговом окне указан как "C:\Windows\System32\GroupPolicy\" смотрите скрин ![]() программа запущенна от имени администратора через блокнот если сохранить просто файл то сохраняет куда надо, тотал командер также видит все как есть собственно что это такое и как все же сохранить в нужную папку? |
|
#2
|
||||
|
||||
|
Цитата:
По идее для 64-битного приложения такого не будет. Есть ли способ "обмануть" винду и заставить-таки записать в папку system32 из 32-битного приложения на 64-битной системе - не знаю. Последний раз редактировалось Bargest, 27.09.2016 в 21:55. |
|
#3
|
|||
|
|||
|
Цитата:
проблема ровно в том что с блокнота и тотал коммандерах32 ты можешь как создать так и записать туда файл, похоже все же дело в самом делфи, а именно баг, даже СейвДиалог при открытии папки показывает другую папку UPD да все такие косяк делфи, собрал прилу х64 все равно тот же косяк Последний раз редактировалось udman, 28.09.2016 в 13:59. |
|
#4
|
|||
|
|||
|
Цитата:
UPD может кому пригодится This is because the WOW64 file system redirection, if your 32-bit app that want to gain access to the native system32 directory, you must use the Wow64DisableWow64FsRedirectionfunction or the Sysnative Alias. Wow64DisableWow64FsRedirection Try this sample Код:
{$APPTYPE CONSOLE}
uses
SysUtils,
Windows;
Function Wow64DisableWow64FsRedirection(Var Wow64FsEnableRedirection: LongBool): LongBool; StdCall;
External 'Kernel32.dll' Name 'Wow64DisableWow64FsRedirection';
Function Wow64EnableWow64FsRedirection(Wow64FsEnableRedirection: LongBool): LongBool; StdCall;
External 'Kernel32.dll' Name 'Wow64EnableWow64FsRedirection';
Var
Wow64FsEnableRedirection: LongBool;
begin
try
if Wow64DisableWow64FsRedirection(Wow64FsEnableRedirection) then
begin
if FileExists('c:\windows\system32\alg.exe') then
Writeln('fe')
else
Writeln('fne');
if not Wow64EnableWow64FsRedirection(Wow64FsEnableRedirection) then
RaiseLastOSError;
end
else
RaiseLastOSError;
except
on E:Exception do
Writeln(E.Classname, ':', E.Message);
end;
Writeln('Press Enter to exit');
Readln;
end.
end.https://msdn.microsoft.com/en-us/lib...(v=vs.85).aspx |