顯示任何進(jìn)程加載的DLL文件的代碼
更新時(shí)間:2013年05月25日 12:45:58 作者:
c語(yǔ)言實(shí)現(xiàn)的顯示任何進(jìn)程加載的DLL,方便開(kāi)發(fā)軟件的朋友
復(fù)制代碼 代碼如下:
#include <windows.h>
#include <iostream.h>
#include <tlhelp32.h>
#include <stdio.h>
int main(int argc, char* argv[])
{
char exename[500];
printf("[ENTER EXE FILE NAME]\t");
scanf("%s",exename);
printf("\n[YOU ENTER]\t%s\n",exename);
Sleep(3000);
//提升當(dāng)前進(jìn)程的權(quán)限使其有權(quán)限對(duì)其他進(jìn)程進(jìn)行操作
HANDLE hToken;
LUID sedebugnameValue;
TOKEN_PRIVILEGES tkp;
if ( ! OpenProcessToken( GetCurrentProcess(),
TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken ) ){
//WriteToLog("openprocesstoken error");
return 1;
}
if ( ! LookupPrivilegeValue( NULL, SE_DEBUG_NAME, &sedebugnameValue ) ){
CloseHandle( hToken );
//WriteToLog("lookuprivilegevalue error");
return 1;
}
tkp.PrivilegeCount = 1;
tkp.Privileges[0].Luid = sedebugnameValue;
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
if ( ! AdjustTokenPrivileges( hToken, FALSE, &tkp, sizeof tkp, NULL, NULL ) ){
CloseHandle( hToken );
return 1;
}
//取得目標(biāo)進(jìn)程的PID
DWORD pid;
HANDLE snapshot;
snapshot=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
struct tagPROCESSENTRY32 processsnap;
processsnap.dwSize=sizeof(tagPROCESSENTRY32);
for(Process32First(snapshot,&processsnap);Process32Next(snapshot,&processsnap);){
if(!stricmp(processsnap.szExeFile,exename))
{
pid=processsnap.th32ProcessID;
break;
}
}
CloseHandle(snapshot);
////////////////////////////////////////
MODULEENTRY32 pe32;
// 在使用這個(gè)結(jié)構(gòu)之前,先設(shè)置它的大小
pe32.dwSize = sizeof(pe32);
// 給進(jìn)程內(nèi)所有模塊拍一個(gè)快照
//276為某進(jìn)程的ID
HANDLE hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE,pid);
if(hProcessSnap == INVALID_HANDLE_VALUE)
{
//建立快照失敗
return -1;
printf("[createtoolhelp32snapshot error]\n");
}
// 遍歷進(jìn)程快照,輪流顯示每個(gè)進(jìn)程的信息
BOOL bMore = Module32First(hProcessSnap, &pe32);
while(bMore)
{
printf("\n[DLL NAME]\t%s\n",pe32.szModule);
printf("[DLL PATH]\t%s\n",pe32.szExePath);
bMore = Module32Next(hProcessSnap, &pe32);
}
// 不要忘記清除掉snapshot對(duì)象
CloseHandle(hProcessSnap);
return 0;
}
相關(guān)文章
C語(yǔ)言中二維數(shù)組作為函數(shù)參數(shù)來(lái)傳遞的三種方法
這篇文章主要給大家介紹了關(guān)于C語(yǔ)言中二維數(shù)組作為函數(shù)參數(shù)來(lái)傳遞的三種方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用C語(yǔ)言有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09數(shù)據(jù)結(jié)構(gòu)之AVL樹(shù)詳解
這篇文章主要介紹了數(shù)據(jù)結(jié)構(gòu)之AVL樹(shù)詳解,本文非常細(xì)致的講解了AVL樹(shù)的基礎(chǔ)知識(shí)、AVL樹(shù)的旋轉(zhuǎn)操作、AVL數(shù)的插入和刪除操作等,需要的朋友可以參考下2014-08-08C++ Boost Algorithm算法超詳細(xì)精講
Boost.Algorithm 提供了補(bǔ)充標(biāo)準(zhǔn)庫(kù)算法的算法。與 Boost.Range 不同,Boost.Algorithm 沒(méi)有引入新概念。 Boost.Algorithm 定義的算法類(lèi)似于標(biāo)準(zhǔn)庫(kù)中的算法2022-10-10C++小知識(shí):用合適的工具來(lái)分析你的代碼
今天小編就為大家分享一篇關(guān)于C++小知識(shí):用合適的工具來(lái)分析你的代碼,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2019-01-01C++共享智能指針shared_ptr的實(shí)現(xiàn)
在C++中沒(méi)有垃圾回收機(jī)制,必須自己釋放分配的內(nèi)存,否則就會(huì)造成內(nèi)存泄露,解決這個(gè)問(wèn)題最有效的方法是使用智能指針,本文主要介紹了C++共享智能指針shared_ptr的實(shí)現(xiàn),感興趣的可以了解一下2023-12-12C++實(shí)現(xiàn)歸并排序(MergeSort)
這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)歸并排序,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-04-04