首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检查用户是否需要“以管理员身份运行”的VB6代码

检查用户是否需要“以管理员身份运行”的VB6代码
EN

Stack Overflow用户
提问于 2014-11-28 23:47:23
回答 2查看 4.8K关注 0票数 0

我的visual basic6应用程序的几个用户必须“以管理员身份运行”,其他用户则不能,只能双击。

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

EN

回答 2

Stack Overflow用户

发布于 2014-11-30 05:51:27

您将需要使用API来确定当前用户是否具有管理权限。

幸运的是,有一个函数为False返回0来指示当前用户的状态。即:IsUserAnAdmin

下面是如何声明和使用它:

代码语言:javascript
复制
'In a module file:
Public Declare Function IsUserAnAdmin Lib "Shell32" Alias "#680" () As Integer

然后在你的Form_Load()

代码语言:javascript
复制
Sub Form_Load()

   If IsUserAnAdmin() = 0 Then 
     MsgBox "Not admin" 
   Else 
     MsgBox "Admin" 
   End If

End Sub

注释:外壳函数IsUserAnAdmin is depricated。您可以使用类似于(伪代码)的内容替换该功能:

代码语言:javascript
复制
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;
}
票数 2
EN

Stack Overflow用户

发布于 2014-12-01 04:29:01

只需将适当的"level“值添加到应用程序清单中。

清单片段示例:

代码语言:javascript
复制
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
    <security>
        <requestedPrivileges>
            <requestedExecutionLevel level="requireAdministrator"
                                     uiAccess="false"/>
        </requestedPrivileges>
    </security>
</trustInfo> 

这会导致Windows引发UAC提示,而不需要用户执行任何特殊操作,也不需要添加任何代码。现在Windows XP已经死了,除了Windows Server2003的残留版本之外,它在所有支持的Windows版本中都可以工作,Windows Server2003计划在几个月内离开扩展支持。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27192086

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档