[VB6]如何讓 VB6 編譯出以管理權限執行的 exe 檔(sample:網路校時工具)

  • 16348
  • 0
  • VB6
  • 2011-08-19

[VB6]如何讓 VB6 編譯出以管理權限執行的 exe 檔(sample:網路校時工具)

大約是在幾年前 Vista 剛出來時,發現之前寫的程式很多都會被 UAC 擋掉,(在那以前我都是把要用的資料放在 ProgramFiles 裡)。

當時的處理方式是直接更動 REG,在下面兩個地方加入執行檔的徑名並存值為‘RUNASADMIN’(REG_SZ),這可以強迫程式用高權限執行

治標不治本的方法(改 REG):

  1. HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers
  2. HKCU\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers

這種做法在在第二次以後執行時才會有效果,而且把 exe 檔 Copy 到別台電腦時管理權限並不會跟著走,所以最後來就甘脆請 User 關掉 UAC 避開這個麻煩 了。

沒幾年功夫 Windows7 出來了,因為手上還有很多程式都有這問題,當時也沒想改用 Visual Studio.net 重新開發所以一直停在想用 VB6 解決的迷思裡。

花了好幾天時間總算弄明白了它是放在資源 manifest 裡面,最後問題還是解決了(那陣子特別做了6個 VB6 可用的 .res 檔)現在就把過程分享一下。

最佳方法(夾帶 manifest 資源):

  1. 下載 RES_forVB6(UAC_Res.rar
  2. 加入 VB6 專案
    imageimageimage
  3. 重新編譯成 exe 檔後就出現那個小盾牌了。
    imageimage

sample 下載:

 

 


ku3