得到占用指定dll的程序

2021-05-28 09:57:09 字數 604 閱讀 9812

接之前的一篇文章

在製作軟體的安裝解除安裝時,有時一些動態庫被某些程序占用,不可以直接刪除,需要先將占用這個動態庫的程序結束。怎麼才能知道動態庫被哪個程序占用呢?

開始的思路是這樣的,在dos裡面有這樣乙個命令「tasklist /m ***.dll」這個命令會列出所有占用了***.dll的程序。ok,原理簡單。只要能得到dos命令的返回結果就ok了。

這種方法確實可以在xp中實現,可是在win2k的系統上就不行了,因為「taskllist」這個命令是在xp及其之後的系統上才加上的。而且如果程式本身是32位的,在64位的機器上也是不行的,需要重新編譯乙個64位的程式。不然用「tasklist」得到的結果是不完整的。只能說,這種方法弱爆了。

所以,最後用了另一種方法,通過程序快照。

先要遍歷所有的程序,然後對每個程序遍歷其占用的模組,從中查詢指定的dll。ok,廢話不多說,**如下:

//結構體,用來存放程序的相關資訊

typedef struct sprocessinfo 

processinfo, *lpprocessinfo;

另外,多說一句,上面這個函式因為放在了乙個定義了unicode的庫里,所以中間有寬字元的轉換,如果不用支援寬字元,可將其去掉。

殺掉占用指定埠的程序

有時啟動tomcat,會啟動失敗,說埠已經被占用,那麼到底是哪個程式占用了埠呢?如何判斷是哪個程序 程式 占用了指定的埠呢?下面我會分兩個平台 windows,linux 來進行詳細說明 windows 系統 通過如下命令查詢占用指定埠的pid 程序id netstat ano findstr 指定...

殺掉占用指定埠的程序

有時啟動tomcat,會啟動失敗,說埠已經被占用,那麼到底是哪個程式占用了埠呢?如何判斷是哪個程序 程式 占用了指定的埠呢?下面我會分兩個平台 windows,linux 來進行詳細說明 windows 系統通過如下命令查詢占用指定埠的pid 程序id netstat ano findstr 指定的...

得到系統程序和結束某個指定的程序

看到這篇文章,關閉指定的ie例項 自己想了另乙個辦法來作 先修改登錄檔 hkey local machine system currentcontrolset service perfproc performance 下的 disable performance counters 的值改為0 得到系...