VB6代码检查用户是否需要"Run As Administrator"



我的 Visual Basic 6 应用程序的多个用户必须"以管理员身份运行"其他人,不要,可以双击。

是否有我可以在程序打开时添加的代码以检查是否需要以管理员身份运行,然后打开一个窗口来指示这一点?

您需要使用 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

注意:外壳函数IsUserAnAdmin已弃用。您可以将该功能替换为类似(伪代码)的内容:

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;
}

只需将适当的"级别"值添加到应用程序清单即可。

示例清单片段:

<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的残余,这些残余计划在几个月内离开扩展支持。

最新更新