2013年9月7日 星期六

讓程式自動以系統管理員身份執行 - gcc / g++ (Mingw)

有的時候我們用C或C++寫出了一支程式並且用GCC或G++等compiler做成成品,

可是這支程式卻預設是由你的帳戶執行的,

那我們若又想要讓它以系統管理員身份執行,怎麼辦呢?

一個做法是請每個使用者都在上面按右鍵→以系統管理員身份執行

但是這樣豈不太麻煩了?況且很有可能會有人忘記要按右鍵選以管理員執行,

所以在此要介紹在Mingw底下就可以讓編譯出來的程式具有自動以系統管理員身份執行的方法:

Step 1. 先將以下的XML檔存成副檔名為.manifest的檔案(eg. XX.manifest)
<?xml version="1.0" encoding="utf-8" ?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="requireAdministrator" />
</requestedPrivileges>
</security>
Step 2. 將以下存成副檔名為.rc的檔案(eg. XX.rc)
其中XX.manifest是你剛才存的manifest檔的檔名,若你剛才存成別的名稱,這裡要相對應更動
1 24 XX.manifest 
Step 3. 到命令提示字元/終端機底下,到達你檔案存放的資料夾,輸入以下指令
這裡XX.rc是你剛才存成的RC檔,RES的檔名你也可以自取一個
windres --input-format=rc -O coff -i XX.rc -o XX.res
Step 4. 編譯你的程式,這裡的XX.res是上一步生成的,此gcc還可以再加上其它參數
gcc XX.c XX.res
Step 5. 至此已編譯出一個可以自動以系統管理員身份執行的程式,這篇的程式也是依此法製成

沒有留言:

張貼留言