c++ ShellExecute占用目录

8gsdolmq  于 2022-11-27  发布在  Shell
关注(0)|答案(1)|浏览(161)

我的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++程序的目录。

olhwl3o2

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:\\"(应该永远存在且可存取)。

相关问题