獲取系統所有軟體的解除安裝資訊

2021-09-27 08:10:11 字數 1570 閱讀 6542

說明:每安裝乙個軟體,那麼該軟體的安裝程式會向登錄檔當中「 software\\microsoft\\windows\\currentversion\\uninstall 」的登錄檔項下面建立乙個登錄檔子項,鍵值儲存解除安裝資料資訊。

實現:1、定義儲存程式解除安裝資訊的結構體software

1

struct

software

2;

2、獲取所有程式解除安裝資訊函式getsoftlistall中定義動態陣列,並呼叫獲取程式解除安裝資訊函式getsoftlist。

判斷系統是否是64位,若是64位系統取消重定向:64bit系統的登錄檔分32 位登錄檔項和64位登錄檔項兩部分。software\\microsoft\\windows\\currentversion\\uninstall 會重定向至 software\\wow6432node\\microsoft\\windows\\currentversion\\uninstall。

1

const vector&getsoftlistall()215

}1617return

s_lst;

18 }

3、getsoftlist函式:開啟登錄檔,遍歷獲取子鍵資訊

1

void getsoftlist( std::vector&lst, bool is64 )215

16 dword csubkeys = 0; //

子鍵數量

17 dword cbmaxsubkey = 0; //

子鍵名稱的最大長度

18 dword retcode = regqueryinfokey(hkey, 0, 0, 0, &csubkeys, &cbmaxsubkey, 0, 0, 0, 0, 0, 0

);19

20for (int i=0; i

21; //

子鍵名稱

23 dword cbname = max_path; //

子鍵名稱的大小

2425

//列舉子鍵資訊

26 retcode = regenumkeyex(hkey, i, achkey, &cbname, null, null, null, null);

27if (retcode ==error_success)

2834}35

36regclosekey(hkey);

37 }

4、querysoft函式:給software結構體成員賦值,加入動態陣列

1

void _querysoft(hkey hkey, lpctstr lpsubkey, bool is64, std::vector&lst) 256

57//

加入陣列

58lst.push_back(soft);

59 }

獲取系統所有程序

delphi的tlhelp32單元封裝了關於程序執行緒,堆,模組的函式和結構。寫 之前先對幾個函式進行一下說明。createtoolhelp32snapshot 函式為指定的程序 程序使用的堆 heap 模組 module 執行緒 thread 建立乙個快照 snapshot 也就是各個程序的這些相...

系統資訊獲取 1,獲取系統版本

getversionex函式原型 cpp view plain copy bool getversionex posversioninfo pversioninformation 結構osversioninfoex定義如下 typedef struct osversioninfoex,posvers...

獲取系統的程序資訊

要想獲取系統的程序資訊,有個很好的方法,就是用toolhelp,其提供的介面可以方便的滿足你的要求,如下 include 首先匯入標頭檔案 pe就是我們獲取的程序結構體 dosomething fok process32next m hsnapshot,pe 還有嗎?其中結構體processentr...