找回密码
 加入我们

QQ登录

只需一步,快速开始

搜索
查看: 8043|回复: 3

在Vista 或Win7 下以管理员身份运行程序

[复制链接]

1214

主题

352

回帖

11

精华

管理员

菜鸟

积分
93755

贡献奖关注奖人气王精英奖乐于助人勋章

发表于 2010-12-12 20:32:00 | 显示全部楼层 |阅读模式
1、判断是否为管理员身份运行程序:
    在windows Vista Windows 7 下有一个 IsAPI可以判断当前应用程序是否以管理员身份运行,但在其它平台却没有这个API。
原型:
Public Declare Function IsUserAnAdmin Lib "shell32" () As Long
在其他平台下的变通方案,可以用下面的函数替代:
int IsUserAnAdmin()
{
     int bToken, bCheck;
     PSID pAdmin;
     SID_IDENTIFIER_AUTHORITY sAuthority = SECURITY_NT_AUTHORITY;
     
     HMODULE hAdvapi32 = LoadLibrary( "advapi32" );
     if( hAdvapi32 != NULL )
     {
         CheckTokenMembership = (CTM) GetProcAddress( hAdvapi32, "CheckTokenMembership" );   
         if( CheckTokenMembership != NULL )
         {
             bToken = AllocateAndInitializeSid( &sAuthority, 2, SECURITY_BUILTIN_DOMAIN_RID, DOMAIN_ALIAS_RID_ADMINS, 0, 0, 0, 0, 0, 0, &pAdmin );
             if( bToken == 1 )
             {
                 bCheck = CheckTokenMembership( NULL, pAdmin, &bToken );
                 if( bCheck == 0 ) {
                     bToken = 1;
                 }
             }
         }
     }
     return( bToken );
}
2、如果您的应用程序必须以管理员身份运行。运行的时候弹出 UAC确认。可以添加一个资源。
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1"
          manifestVersion="1.0">
<dependency>
    <dependentAssembly>
        <assemblyIdentity
            type="win32"
            name="Microsoft.Windows.Common-Controls"
            version="6.0.0.0"
            processorArchitecture="X86"
            publicKeyToken="6595b64144ccf1df"
            language="*"
        />
    </dependentAssembly>
</dependency>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
    <security>
        <requestedPrivileges>
            <requestedExecutionLevel
                level="requireAdministrator"
                uiAccess="false"/>
        </requestedPrivileges>
    </security>
</trustInfo>
</assembly>

评分

参与人数 1 +20 +20 水晶币 +20 +20 收起 理由
Tesla.Angela + 20 + 20 + 20 + 20 我很赞同

查看全部评分

【VB】QQ群:1422505加的请打上VB好友
【易语言】QQ群:9531809  或 177048
【FOXPRO】QQ群:6580324  或 33659603
【C/C++/VC】QQ群:3777552
【NiceBasic】QQ群:3703755

857

主题

2632

回帖

2

精华

管理员

此生无悔入华夏,  长居日耳曼尼亚。  

积分
36130
发表于 2010-12-12 21:26:48 | 显示全部楼层
这个方法不错,学习了。

7

主题

414

回帖

1

精华

铂金会员

积分
2173
发表于 2013-4-12 00:00:57 | 显示全部楼层
M. 了不起. 學習起來

78

主题

190

回帖

9

精华

贵宾会员

积分
15605
发表于 2016-2-10 03:32:06 | 显示全部楼层
加进app.config么。。。然后就无法启动了,下面有一堆消息提示找不到特性啥啥的
您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

快速回复 返回顶部 返回列表