我的visual basic 6应用程序的几个用户必须“以管理员身份运行” 其他人,不要,只需双击。
是否有一个代码可以在程序打开时添加,以检查是否需要Run As Aministrator,然后打开一个窗口来指示这个?
答案 0 :(得分:1)
您需要使用API来确定当前用户是否具有管理权限。
幸运的是,有一个函数返回0
False
来表示当前用户的状态。即:IsUserAnAdmin
以下是如何声明并使用它:
'In a module file:
Public Declare Function IsUserAnAdmin Lib "Shell32" Alias "#680" () As Integer
然后在Form_Load()
Sub Form_Load()
If IsUserAnAdmin() = 0 Then
MsgBox "Not admin"
Else
MsgBox "Admin"
End If
End Sub
注意:Shell函数IsUserAnAdmin
is depricated。您可以使用类似(伪代码)的内容替换功能:
Boolean IsUserAdmin()
{
PSID administratorsGroup = StringToSid("S-1-5-32-544"); //well-known Administrators group
Boolean isAdmin;
if (not CheckTokenMembership(0, administratorsGroup, out isAdmin) then
isAdmin = false;
FreeSid(administratorsGroup);
return isAdmin;
}
答案 1 :(得分:0)
只需添加适当的"级别"值应用程序清单。
示例清单片段:
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="requireAdministrator"
uiAccess="false"/>
</requestedPrivileges>
</security>
</trustInfo>
这会导致Windows在没有任何特殊操作且没有任何添加代码的情况下引发UAC提示。现在,Windows XP已经死了并被埋没了,这可以在所有受支持的Windows版本中运行,除了延迟的Windows Server 2003残留,计划在几个月内留下扩展支持。