Win7加管理員權限

 

近期做一個NOD32的Key程序時,在win7遇到一個管理員權限的問題,就是很多時候在WIN7無法修改註冊,使得我程序不能實現相應目的,最終還是在百度幫助下做完成了,現在把我解決的方法與大家交流一下。

正文:
   現在已經是一個小部分WIN7與大部分XP共存的世界,但爲了這小部分考慮win7情況也是不可避免的問題。

很多網友懷疑win7下VB有問題,按目前我自己使用情況32位旗艦版下,完成沒有任何問題,還包括衆多插件也是沒有任何問題,只有一些用到了必須用到管理員權限東西時就比XP多一點,這一類程序必須右鍵以管理員才能正確運行,很多用戶他們根本不會做這一點,所以使得這一類程序出現不同問題,如不能修改註冊表的特殊項了等等。


參考了一下網上,發現大部分是關delphi、c++的內容,
綜合了這方面內容,與以前XP模式的內容,得出怎樣VB怎樣在WIN7以管理員運行且單文件化無控件化(當然你帶不介意帶一個manifest文件,那就只要完成第一步就完成了!)。

一、首先參考(http://msdn.microsoft.com/en-us/library/bb756929.aspx)建立一個manifest文件

我做法就是:
1、新建一個文本文件。
2、寫入以下內容:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity version="1.0.0.0"
     processorArchitecture="X86"
     name="IsUserAdmin"
     type="win32"/>
<description>Description of your application</description>
<!-- Identify the application security requirements. -->
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
    <security>
      <requestedPrivileges>
        <requestedExecutionLevel
          level="requireAdministrator"
          uiAccess="false"/>
        </requestedPrivileges>
       </security>
</trustInfo>
</assembly>
3、另存爲一個與你程序名稱(包括Exe後綴)相同manifest文件,如:abc.exe.manifest 。


二、做一個資源文件名爲類型爲“24”的資源文件。


         我的做法參考以前“XP界面”方法,有二種如下:
       
兩種方法都必須建一個RC文件,方法:新建一個文本,寫入“1 24 abc.exe.manifest”雙引號裏面的   內容(當然abc.exe.manifest得與你第一製作的manifest文件相同名字),另存爲一個任意名的RC文件,如:ABC.rc
第一種就是你有VC的用vc打開RC文件,之後另爲RES文件就OK了。
第二種就是純VB人員了,就得用VB自帶的(不排除一些綠色版也沒有這個文件!)方法:打開CMD,進入VB安裝目錄的Wizard文件夾(如:cd C:/Program Files/Microsoft Visual Studio/VB98/Wizards 之後回車),再輸入 “rc /r 你的RC文件路徑”(如:rc /r e:/vb/win.rc),得到的資源文件,通過VB資源管輯器導入後編譯你的程序就完成了。

三、當然在win7試一下效果。我的是OK,就不知大家怎樣。

注:當然你在WIN7是登錄時有管理員權限的,這個方法不是強行提高權限,只是爲用戶省下右鍵點管理員權限而已。

 

Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT/*/shell/runas]
@="獲取管理員權限"
"NoWorkingDirectory"=""
[HKEY_CLASSES_ROOT/*/shell/runas/command]
@="cmd.exe /c takeown /f /"%1/" && icacls /"%1/" /grant administrators:F"
"IsolatedCommand"="cmd.exe /c takeown /f /"%1/" && icacls /"%1/" /grant administrators:F"
[HKEY_CLASSES_ROOT/exefile/shell/runas2]
@="獲取管理員權限"
"NoWorkingDirectory"=""
[HKEY_CLASSES_ROOT/exefile/shell/runas2/command]
@="cmd.exe /c takeown /f /"%1/" && icacls /"%1/" /grant administrators:F"
"IsolatedCommand"="cmd.exe /c takeown /f /"%1/" && icacls /"%1/" /grant administrators:F"
[HKEY_CLASSES_ROOT/Directory/shell/runas]
@="獲取管理員權限"
"NoWorkingDirectory"=""
[HKEY_CLASSES_ROOT/Directory/shell/runas/command]
@="cmd.exe /c takeown /f /"%1/" /r /d y && icacls /"%1/" /grant administrators:F /t"
"IsolatedCommand"="cmd.exe /c takeown /f /"%1/" /r /d y && icacls /"%1/" /grant administrators:F /t"

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章