能力值:
( LV2,RANK:10 )
|
-
-
2 楼
请求帮忙!!!
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
貌似 GetCurrentDirectory 函数就可以获取 dll 的完整路径!
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
这个只能获取到当前的目录,比如我知道notepad.exe有kernel32.dll。那我如何获取到该dll的路径呢??
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
GetModuleFileName(g_hInstance,strPath,MAX_PATH);
g_hInstance是你的DLL的实例
来自csdn,你可以尝试下!
GetCurrentDirectory对于调用系统自身的dll文件还是可以用的!
其实,兄弟,这东西网上貌似很多回答过的啊,要尝试搜索!
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
多谢兄弟的赐教,呵呵,我以后会注意的
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
我用方法如下:
//通过PE的格式来找到引用的DLL
HANDLE hFile=CreateFile(buff,GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
if(hFile==INVALID_HANDLE_VALUE)
{
AfxMessageBox("open file fail");
return;
}
HANDLE hFileMap=CreateFileMapping(hFile,NULL,PAGE_READONLY,0,0,NULL);
if(hFileMap==NULL || hFileMap==INVALID_HANDLE_VALUE)
{
AfxMessageBox("maping fail");
return;
}
LPBYTE lpbaseAddress=(LPBYTE)MapViewOfFile(hFileMap,FILE_MAP_READ,0,0,0);
if(lpbaseAddress==NULL)
{
AfxMessageBox("could not map view of file");
return;
}
PIMAGE_DOS_HEADER pDosHeader=(PIMAGE_DOS_HEADER)lpbaseAddress;
PIMAGE_NT_HEADERS pNtHeaders=(PIMAGE_NT_HEADERS)(lpbaseAddress+pDosHeader->e_lfanew);
DWORD rva_import_table=pNtHeaders->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT].VirtualAddress;
if(rva_import_table==0)
{
AfxMessageBox("no import table");
UnmapViewOfFile(lpbaseAddress);
CloseHandle(hFileMap);
CloseHandle(hFile);
return;
}
PIMAGE_IMPORT_DESCRIPTOR pImageTable=(PIMAGE_IMPORT_DESCRIPTOR)ImageRvaToVa(
pNtHeaders,lpbaseAddress,rva_import_table,NULL);
IMAGE_IMPORT_DESCRIPTOR null_iid;
IMAGE_THUNK_DATA null_thunk;
memset(&null_iid,0,sizeof(null_iid));
memset(&null_thunk,0,sizeof(null_thunk));
for(int i=0;memcmp(pImageTable+i,&null_iid,sizeof(null_iid))!=0;i++)
{
LPCSTR szDllName=(LPCSTR)ImageRvaToVa(pNtHeaders,lpbaseAddress,pImageTable[i].Name,NULL);
//szDllName只是dll名字,但是不是全路径。
AfxMessageBox(szDllName);
}
如果是这种,该怎么获取全路径?
|
能力值:
( LV4,RANK:50 )
|
-
-
8 楼
windows下有个文件搜索路径问题。。。。。。
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
谢谢分享技术~~
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
去看看核心编程里面有说dll加载顺序的相关路径方法,你就能明白了。
|
能力值:
( LV2,RANK:10 )
|
-
-
11 楼
系统DLL的路径是:C:\windows\system32
文件自己DLL的路径是:文件的当前目录吧
不知道楼主想干嘛,PE格式里面的信息好像没有DLL的路径
|
能力值:
( LV2,RANK:10 )
|
-
-
12 楼
好像一般的EXE里面引用的DLL的路径都是:C:\WINDOWS\SYSTEM32哦 你不要纠结了
|
|
|