我正在尝试:
cmdline := 'I:\test.exe';
Result := ShellExecute(0,nil, PChar(cmdline),PChar(''),nil,1)
我在哪里:\是网络驱动器。这会给我错误:2 - 找不到文件
如果我尝试:
cmdline := '\\10.10.10.10\data\test.exe';
Result := ShellExecute(0,nil, PChar(cmdline),PChar(''),nil,1)
给出错误:5 - 拒绝访问
所以我猜ShellExecute
没有获取映射的网络驱动器,也没有获取登录用户的凭据。
那么如何让ShellExecute
在当前用户环境中执行命令?
或者更可能的是:我遗漏了哪些明显的东西?
希望@RBA给我一个我现在尝试过的显而易见的事情:
FillChar( StartupInfo, SizeOf( TStartupInfo ), 0 );
StartupInfo.cb := SizeOf( TStartupInfo );
StartupInfo.dwFlags := STARTF_USESHOWWINDOW;
StartupInfo.wShowWindow := sw_Normal;
FillChar( ProcessInfo, SizeOf( TProcessInformation ), 0 );
if CreateProcess(pchar(cmdline), Nil, Nil, Nil,
False, CREATE_NEW_CONSOLE, Nil, Nil,
StartupInfo, ProcessInfo) then
result := true
else
result := false;
但仍然没有推出exe :( 相同的错误:2 - 找不到文件。 让我相信除了代码之外还有一些东西让我玩弄了......
答案 0 :(得分:-1)
我终于找到了显而易见的东西。上例中给出的路径只是一个例子。真正的道路是:
I:\Prosjekt\Læringssenteret\VgFriskoleIndivid\Program\utvOve\WisKrypt\Install
问题是挪威人的角色:æ 但这并不能解释为什么我得到错误5 - 尝试UNC路径时拒绝访问...