vc运行压缩文件内exe文件怎样取得该压缩文件的路径?

来源:百度知道 编辑:UC知道 时间:2024/06/18 09:14:55
怎样获得可执行文件的路径就不用说了(其实F盘的文件,取得的路径却是在系统盘里面的temp里面的,这个我知道不用解释下面的才是主要)
可执行文件在压缩包内,运行该文件怎样获取它外面的压缩文件的路径不是该可执行文件的路径(压缩文件的基本名可能与可执行文件不一样)
如a.exe在kk.rar内,如何取得kk.rar的路径.形如d:\....\kk.rar
希望能给个代码,把路径放在CString变量里面
解决了会把给加到200分献上,谢谢
是的,运行a.exe后获取的所有路径都是内存里面的.不是硬盘的上

谢谢楼上的朋友.shangerdi谢谢你!学了两年半的VC了感觉现在还真的只是学了一半而以.你的方法很独特非常的巧妙,第一种方法我可以自己把它拿下,谢谢

我觉得可以,我先试试

找到一个简单方法:
EXE直接打开注册表
[HKEY_CURRENT_USER\Software\WinRAR\ArcHistory]
里面就是RAR打开的文档记录,第0个就是最新打开的RAR路径,不过这个可能产生问题。比如先打开a.rar再打开b.rar,结果双击的是a.exe,那么提示的RAR路径就是B了

还有一个深奥的解决方案,但是我估计我水平是不行了,说说思路吧。先获得EXE的父进程(RAR进程)句柄(这个是可以做到的),然后强行将一个DLL注入到RAR进程,DLL中通过GetCommandLine()函数获得RAR的启动参数,其实就是解压的RAR的路径,搞定!

看来我搞定了:)
在你程序对话框的OnInitDialog()中加入下面代码,同时加上头文件#include <TLHELP32.H>

// TODO: Add extra initialization here
HANDLE hProcessSnap = NULL;
PROCESSENTRY32 pe32 = {0};
HANDLE hProcessParent = NULL;
DWORD dwParentProcessID = 0;
TCHAR Buff[MAX_PATH] = {0};
CString RARPath;
CString Temp;
HWND hWnd;
BOOL Flag = FALSE;
DWORD ProcessID;
WIN32_FIND_DATA Find_Data;

hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);

pe32.dwSize = sizeof(pe32);
Process32First(hProcessSnap, &pe32);

do
{
if