我的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++程序的目录。
发布于 2022-11-22 10:00:36
该目录被占用,因为辅助程序正在继承该目录作为其工作目录。为了避免这种情况,您可以指定辅助程序应该在lpDirectory参数ShellExecuteW()中使用的工作目录。
https://learn.microsoft.com/en-us/windows/win32/api/shellapi/nf-shellapi-shellexecutew
[in, optional] lpDirectory
类型:LPCTSTR
指向以空结尾的字符串的指针,该字符串指定操作的默认(工作)目录。如果此值为NULL,则使用当前工作目录。如果在lpFile提供了相对路径,则不要为lpDirectory使用相对路径。
例如,您可以指定"C:\\" (应该始终存在并且是可访问的)。
https://stackoverflow.com/questions/74529928
复制相似问题