|
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>
|
评分
-
查看全部评分
|