gpt4 book ai didi

c++ - 当我的应用程序从另一个应用程序启动时,相对路径发生了变化

转载 作者:行者123 更新时间:2023-11-28 01:46:19 25 4
gpt4 key购买 nike

我遇到了一个困惑的问题,我有一个应用程序(我们命名为 A.exe),在我的应用程序中,它可以启动另一个应用程序(B.exe),在我的文件夹中,A.exe 和 B.exe 在同一个文件夹,所以这里B.exe的相对路径是“B.exe”。

但是,现在另一个应用程序(C.exe)可以运行A.exe,C.exe在另一个文件夹中,所以问题来了,如果从C.exe启动A.exe,它永远无法运行C.exe,因为我得到一个错误说它找不到 C.exe。

所以我认为相对路径更改为当前C.exe的文件夹,在C.exe文件夹中,没有B.exe。

有 friend 遇到这个问题吗?或者我怎样才能在不同的状态下获得正确的相对路径来解决这个问题?

我使用 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 将在给定文件夹中打开。如果没有,nautilus 将在启动它的进程的文件夹中打开,在本例中为 Documents 文件夹。

为避免此问题,如果 B.exe 始终与 A.exe 在同一文件夹中,则使用可执行文件的相对路径启动 B.exe,方法是使用 GetModuleFileName功能。

关于c++ - 当我的应用程序从另一个应用程序启动时,相对路径发生了变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44923411/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com