近期做一個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是登錄時有管理員權限的,這個方法不是強行提高權限,只是為用戶省下右鍵點管理員權限而已。
