易語言製作UAC管理員模式新增器

2022-09-21 14:27:12 字數 3231 閱讀 7491

dll命令表

.版本 2

.dll命令 beginupdateresource, 整數型, "kernel32.dll", "beginupdateresourcea"

.引數 pfilename, 文字型

.引數 bdeleteexistingresources, 邏輯型

.dll命令 updateresource, 邏輯型, "kernel32.dll", "updateresourcea"

.引數 hupdate, 整數型

.引數 lptype, 整數型

.引數 lpname, 整數型

.引數 wlanguage, 整數型

.引數 lpdata, 整數型

.引數 cbdata, 整數型

.dll命令 endupdateresource, 邏輯型, "kernel32.dll", "endupdateresourcea"

.引數 hupdate, 整數型

.引數 fdiscard, 邏輯型

.dll命令 findresource, 整數型, "kernel32.dll", "findresourcea"

.引數 hmodule, 整數型

.引數 lpname, 整數型

.引數 lptype, 整數型

常量資料表

常量名稱 manifest清單資料

常量值<?xml version="1.0" encoding="utf-8"?>

afonirrmjuty>

程式設計客棧urity>

afonirrmjuv1:assembly>

uac管理員模式新增器

此功能需要載入ex_directui 2.0模組

.版本 2

.支援庫 edroptarget

.支援庫 iconv

.支援庫 spec

.程式集 視窗程式集

.程式集變數 dui, ex_directui

.程式集變數 分組框, 分組框_ex

.程式集變數 標籤, 標籤_ex

.程式集變數 編輯框, 編輯框_ex

.程式集變數 按鈕, 按鈕_ex, , "2"

.子程式 __啟動視窗_建立完畢

dui.掛接** (取視窗控制代碼 (), , 取位元組集資料 (, #整數型, ), , , , #外形方式_矩形)

分組框.建立 (取視窗控制代碼 (), 12, 32, 356, 66, , , , , , , , , rgb2argb (#白色, 190), , #外形方式_矩形, )

標籤.建立 (取視窗控制代碼 (), 18, 42, 100, 20, 「請選擇pe檔案:」)

編輯框.建立 (取視窗控制代碼 (), 108, 40, 194, 20, , , , , , , , , #輸入方式_唯讀方式)

按鈕 [1].建立 (取視窗控制代碼 (), 308, 40, 50, 21, 「...」)

按鈕 [2].建立 (取視窗控制代碼 (), 22, 68, 336, 21, 「 一鍵向pe檔案新增uac(可拖入pe檔案至本視窗)」)

按鈕 [2].圖示 (#新增圖示)

按鈕 [1].掛接事件 (#事件_左鍵按下, &按鈕1_被左鍵按下)

按鈕 [2].掛接事件 (#事件_左鍵按下, &按鈕2_被左鍵按下)

拖放物件.註冊拖放控制項 (取視窗控制代碼 ())

.子程式 按鈕1_被左鍵按下

.如果真 (通用對話方塊.開啟 () = 真)

編輯框.內容 (通用對話方塊.檔名)

.如果真結束

.子程式 按鈕2_被左鍵按下

.如果真 (編輯框.內容 () = 「」)

資訊框_ex (取視窗控制代碼 (), 「一鍵向pe檔案新增uac(可拖入pe檔案至本視窗)!」, #確認鈕, 「提示」, #資訊圖示)

返回 ()

.如果真結束

.如果 (更新manifest清單 (編輯框.內容 (), 編碼轉換 (到位元組集 (#manifest清單資料), #編碼_char, #編碼_utf_8, )))

資訊框_ex (取視窗控制代碼 (), 「向指定pe檔案新增uac成功!」, #確認鈕, 「提示」, #資訊圖示)

.否則 資訊框_ex (取視窗控制代碼 (), 「向指定pe檔案新增uac失敗!」, #確認鈕, 「提示」, #錯誤圖示)

.如果結束

.子程式 _拖放物件_得到檔案

.引數 接收到的檔案路徑, 文字型

.如果 (到小寫 (取檔案格式 (接收到的檔案路徑)) = 「exe」)

編輯框.內容 (接收到的檔案路徑)

.否則 資訊框_ex (取視窗控制代碼 (), 「請拖放pe檔案到本視窗!」, #確認鈕, 「提示」, #錯誤圖示)

.如果結束

.子程式 取檔案格式, 文字型

.引數 檔名, 文字型

返回 (取文字右邊 (檔名, 取文字長度 (檔名) - 倒找文字 (檔名, 「.」, , 假)))

.子程式 更新manifest清單, 邏輯型

.引數 pe檔案路徑, 文字型

.引數 清單資料, 位元組集

.區域性變數 hupdate, 整數型

.區域性變數 hmodule, 整數型

.區域性變數 ret, 邏輯型

hupdate = beginupdateresourc程式設計客棧e (pe檔案路徑, 假)

hmodule = getmodulehandle (pe檔案路徑)

.如果真 (findresource (hmodule, 1, 24) ≠ 0) ' 判斷pe檔案是否存在manifest清單

updateresource (hupdate, 24, 1, 0, 0, 0) ' 刪除pe檔案中的manifest清單

.如果真結束

updateresource (hupdate, 24, 1, 2052, 取變數資料位址 (清單資料), 取位元組集長度 (清單資料)) ' 加入uac的清單資料

ret = endupdateresource (hupdate, 假)

.如果真 (ret = 假)

hupdate = beginupdateresource (pe檔案路徑, 假)

updateresource (hupdat程式設計客棧e, 24, 1, 2052, 取變數資料位址 (清單資料), 取位元組集長度 (清單資料))

ret = endupdateresource (hupdate, 假)

.如果真結束

closehandle (hmodule)

返回 (ret)

執行結果:

總結

QT程式以管理員許可權執行 UAC

方案一 僅適用於使用msvc編譯器 在pro檔案中新增一行指令即可,qmake lflags manifestuac level requireadministrator uiaccess false vs2013 在xp執行 qmake lflags subsystem windows,5.01 ...

如何跳過UAC以管理員身份啟動程式

可能會有使用者選擇禁用uac,但這畢竟對系統的安全存在影響。下面就用乙個簡單的方法解決這個問題。該方法就是利用系統自帶的任務計畫程式來實現的。找到任務計畫程式。方式一 開始選單 附件 系統工具 任務計畫程式 方式二 直接在開始選單的搜尋欄中輸入 任務計畫程式 也可以找到 方式三 執行 win r 輸...

如何跳過UAC以管理員身份啟動程式

往往我們要用管理員身份去執行乙個程式的時候,總是要有乙個提示框 可能會有使用者選擇禁用uac,但這畢竟對系統的安全存在影響。下面就用乙個簡單的方法解決這個問題。該方法就是利用系統自帶的任務計畫程式來實現的。找到任務計畫程式。方式一 開始選單 附件 系統工具 任務計畫程式 方式二 直接在開始選單的搜尋...