从另一个应用启动我的应用时出现相对路径更改问题
relative path changed issue when my app is launched from another app
我面临一个困惑的问题,我有一个应用程序(让我们命名为A.exe),在我的应用程序中,它可以启动另一个应用程序(B.exe),在我的文件夹中,A.exe和B.exe在同一个文件夹中,所以这里B.exe的相对路径是"B.exe"。
但是,现在另一个应用程序(C.exe)可以运行A.exe,C.exe在另一个文件夹中,所以问题来了,如果A.exe从C.exe启动,它永远无法运行C.exe,因为我收到一个错误说它找不到C.exe。
所以我认为相对路径更改为当前 C.exe 的文件夹,在 C.exe 文件夹中,没有 B.exe。
有没有朋友遇到这个问题?或者我怎样才能在不同的状态下获得正确的相对路径来解决这个问题?
我使用ShExecInfo来运行我的c.exe,一些代码如下:
QStringList paramList;
paramList.push_back("requiresAdmin");
QString paramsAsOneString = paramList.join(' ');
LPCWSTR szParams = reinterpret_cast<LPCWSTR>(paramsAsOneString.utf16());
LPCWSTR szAppName = reinterpret_cast<LPCWSTR>(appName.utf16());
SHELLEXECUTEINFO ShExecInfo = { 0 };
ShExecInfo.cbSize = sizeof(SHELLEXECUTEINFO);
ShExecInfo.fMask = SEE_MASK_NOCLOSEPROCESS;
ShExecInfo.hwnd = NULL;
ShExecInfo.lpVerb = L"runas";
ShExecInfo.lpFile = szAppName;
ShExecInfo.lpParameters = szParams;
ShExecInfo.lpDirectory = NULL;
ShExecInfo.nShow = SW_SHOW;
ShExecInfo.hInstApp = NULL;
如果您从另一个应用程序启动应用程序,则还必须设置该文件夹。我的意思是,如果 C 处于PATH_C状态,并且 C 启动了PATH_A中的应用程序 A,则进程 A 在PATH_C中运行,因此当您尝试运行进程 B 时,它无法访问。
例如,您还必须设置文件夹。当你在 Ubuntu 中运行 nautilus 时,你还必须设置文件夹:
user:~Documents/$: nautilus /home/user/
如果是这样,则在给定文件夹中打开鹦鹉螺。如果没有,Nautilus 将在启动它的进程的文件夹中打开,在本例中为"文档"文件夹。
为了避免这个问题,如果 B.exe all all 与 A.exe 位于同一文件夹中,则使用 GetModuleFileName 函数使用可执行文件的相对路径启动 B.exe。
相关文章:
- 更改应用程序数据的路径
- CMake导出的库-在客户端应用程序中找不到include/Lib路径
- 按名称问题获取卸载应用程序路径
- 从另一个应用启动我的应用时出现相对路径更改问题
- 设置所需DLL文件的自定义路径:电子应用
- QT MAC应用程序存储数据路径
- 如何将应用程序URI转换为普通文件路径
- 如何使用QT程序中的默认应用程序打开使用相对路径的PDF
- 在UWP中获取fopen()的应用程序路径
- 转到QT C 应用上Android/ios上下载的设备根路径
- 在应用程序末尾获取不带应用程序名称的应用程序路径
- 获取dll中的应用程序路径
- 服务器应用程序看不到具有相对路径的文件
- 已编译的应用想要从绝对路径加载 DLL
- 打开.doc文件,但不提供其处理程序应用程序C++的路径
- 如何使用Qt Windows中的设置路径属性从命令行运行应用程序(.exe)时在命令行上打印日志
- 本机代码中外部存储的应用路径
- 当路径中有空格时,从与Qt应用程序相同的目录启动可执行文件
- 如何为我的C++应用程序提供单击以打开所述应用程序的文件的文件路径
- 在树上应用 bfs 以查找两个顶点之间的最长路径