SHELLEXECUTEINFO shExecInfo;
shExecInfo.cbSize = sizeof(SHELLEXECUTEINFO);
shExecInfo.fMask = NULL;
shExecInfo.hwnd = NULL;
shExecInfo.lpVerb = _T("runas");
shExecInfo.lpFile = filePath;
shExecInfo.lpParameters = NULL;
shExecInfo.lpDirectory = NULL;
shExecInfo.nShow = SW_MAXIMIZE;
shExecInfo.hInstApp = NULL;
ShellExecuteEx(&shExecInfo);
如果文件路径是从 Internet 下载的临时文件,ShellExecuteEx 将失败。但如果文件路径是普通文件名,例如“记事本”,它确实有效。
我得出结论 shellexecute 需要正确的扩展名,但普通权限应用程序无法将可执行文件写入系统分区,例如 c:\users\xxx\local\temp\xxx.exe。
错误代码是 ERROR_NO_ASSOCIATION。
请帮我解决这个矛盾。