VB6代码检查用户是否需要"以管理员身份运行"

时间:2014-11-28 15:47:23

标签: vb6 uac administrator

我的visual basic 6应用程序的几个用户必须“以管理员身份运行” 其他人,不要,只需双击。

是否有一个代码可以在程序打开时添加,以检查是否需要Run As Aministrator,然后打开一个窗口来指示这个?

2 个答案:

答案 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残留,计划在几个月内留下扩展支持。