我的C程序在一个目录下(A
),通过这个程序运行ShellExecute()
后,打开一个应用XShell,关闭我的C程序,然后我发现在资源监视器中,A
目录被我启用的程序XShell占用了,怎么解决?
ShellExecuteW(NULL, L"open", L"D:\\Program Files\\NetSarang\\Xshell 6\\Xshell.exe", NULL, NULL, SW_SHOWDEFAULT)
C程序退出后,XShell占用了我的C程序目录。
我希望通过ShellExecute()
打开应用程序后,该应用程序不会占用C++程序的目录。
1条答案
按热度按时间olhwl3o21#
该目录已被占用,因为辅助程序将该目录作为其 * 工作目录 * 继承。要避免这种情况,可以在
ShellExecuteW()
的lpDirectory
参数中指定辅助程序应使用的所需工作目录:https://learn.microsoft.com/en-us/windows/win32/api/shellapi/nf-shellapi-shellexecutew
[in, optional] lpDirectory
型号:
LPCTSTR
指向以null结尾的字符串的指针,该字符串指定操作的默认(工作)目录。如果此值为
NULL
,则使用当前工作目录。如果在 lpFile 处提供了相对路径,则不要对 lpDirectory 使用相对路径。例如,您可以指定
"C:\\"
(应该永远存在且可存取)。