客戶端以管理員許可權執行

2022-07-05 19:18:13 字數 1318 閱讀 5668

閱讀本文大概需要 3 分鐘

管理員許可權可能大家也比較熟悉,某些軟體在執行的時候會彈出安全提示,提示是否以管理員許可權執行,點選確定後才能正常執行

隨著 windows 系統的的公升級,在 window 7以上的系統中,我們要讀寫某些特殊位置可能需要管理員許可權,否則會導致讀寫失敗,比如登錄檔的讀寫,因此在這種情況下我們需要啟動時就要獲取管理員許可權

給程式設定管理員許可權只需要設定應用程式清單配置即可

上周五使用 qt 的打包工具打包乙個客戶端,打包完成後一切都正常,唯獨寫登錄檔失敗,發現失敗的幾台電腦都是 windows7 以上的版本,那麼奇怪的問題來了,當時大概猜到了可能是許可權的問題

因此,使用滑鼠右鍵單擊該安裝包,讓其以管理員許可權執行,結果安裝完成後沒有一點問題。那麼問題就定位到了,windows 10等系統許可權高,需要給我們的安裝包賦予管理員許可權

windows系統如何知道某個 exe 執行時以什麼許可權在執行?其實是通過乙個配置檔案來確認的,配置檔案名字隨意起,比如類似這樣的 uac.manifest

在我們編譯自己的 exe 過程中,將這個配置檔案一起編譯成最終的 exe 即可

uac.manifest 配置檔案的內容大概如下

<?xml version="1.0" encoding="utf-8" standalone="yes"?>

其中最關鍵的就是這句

關於level型別可以檢視微軟官方文件

microsoft

上面這四種配置型別可以根據自己需要進行配置

qt pro 配置

win32
main.rc 檔案內容

#define rt_manifest 24

#define createprocess_manifest_resource_id 1

createprocess_manifest_resource_id rt_manifest "uac.manifest"

然後重新編譯你的工程,最後生成的exe啟動許可權就是管理員許可權了,可以檢視你的軟體 下面是否帶乙個盾牌圖示,如果有那麼恭喜你設定成功了,如果沒有自己檢查下上述幾點重要設定

這次設定管理員許可權是給打包的exe設定了,這樣這個exe在把我們的軟體打包完成後最終生成新的exe也是擁有同樣的許可權,由於我們的軟體在安裝過程中需要寫登錄檔,因此這樣剛好解決了我們目前的問題

上述方法是通過修改qifw原始碼實現的,如果直接用官方公布的 exe打包是達不到這種效果的

C 程式以管理員許可權執行

cosmic spy 在vista 和 windows 7 及更新版本的作業系統,增加了 uac 使用者賬戶控制 的安全機制,如果 uac 被開啟,使用者即使以管理員許可權登入,其應用程式預設情況下也無法對系統目錄 系統登錄檔等可能影響系統正常執行的設定進行寫操作。這個機制大大增強了系統的安全性,但...

C 程式以管理員許可權執行

在vista 和 windows 7 及更新版本的作業系統,增加了 uac 使用者賬戶控制 的安全機制,如果 uac 被開啟,使用者即使以管理員許可權登入,其應用程式預設情況下也無法對系統目錄 系統登錄檔等可能影響系統正常執行的設定進行寫操作。這個機制大大增強了系統的安全性,但對應用程式開發者來說,...

C 程式以管理員許可權執行

下面演示 c 程式如何實現提示使用者以管理員許可權執行。本例以winform程式演示,新建一專案生成後進行相應修改 方法一 通過 system.diagnostics.process.start 方式啟動 實現方法 修改預設生成的program檔案,修改後的 如下 由於已經在 上做了注釋,所以不再詳...