我在Win 7 64b上。
我试图从我的delphi应用程序运行msconfig。
msconfig.exe文件位于system32文件夹中。
我将msconfig.exe复制到c:\,并且效果很好。
这看起来像是某种权限问题。
var
errorcode: integer;
begin
errorcode :=
ShellExecute(0, 'open', pchar('C:\Windows\System\msconfig.exe'), nil, nil, SW_NORMAL);
if errorcode <= 32 then
ShowMessage(SysErrorMessage(errorcode));
end;
有没有人看到这一点,并想出了如何从sys32运行msconfig.exe。
最佳答案
此行为是由File System Redirector
引起的,您可以使用Wow64DisableWow64FsRedirection
和Wow64EnableWow64FsRedirection
函数来解决。
{$APPTYPE CONSOLE}
uses
ShellAPi,
SysUtils;
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
Wow64DisableWow64FsRedirection(Wow64FsEnableRedirection);
ShellExecute(0, nil, PChar('C:\Windows\System32\msconfig.exe'), nil, nil, 0);
Wow64EnableWow64FsRedirection(Wow64FsEnableRedirection);
except
on E: Exception do
Writeln(E.ClassName, ': ', E.Message);
end;
end.