zoukankan      html  css  js  c++  java
  • Windows判断是否为管理员

    // IsUserAdminTest.cpp : Defines the entry point for the console application.
    //
    
    #include <Windows.h>
    #include <tchar.h>
    #include <iostream>
    BOOL IsUserAdmin();
    
    int _tmain(int argc, _TCHAR* argv[])
    {
    	printf_s("%d
    ",IsUserAdmin());
    	return 0;
    }
    
    BOOL IsUserAdmin()
    {
    	BOOL b = FALSE;
    	SID_IDENTIFIER_AUTHORITY NtAuthority = SECURITY_NT_AUTHORITY;
    	PSID AdministratorsGroup = NULL; 
    	b = AllocateAndInitializeSid(
    		&NtAuthority,
    		2,
    		SECURITY_BUILTIN_DOMAIN_RID,
    		DOMAIN_ALIAS_RID_ADMINS,
    		0, 0, 0, 0, 0, 0,
    		&AdministratorsGroup); 
    	if(b) 
    	{
    		HANDLE hThreadUserToken = NULL;
    		if (!::OpenThreadToken(::GetCurrentThread(), 
    			TOKEN_READ,//must have TOKEN_QUERY
    			false,
    			&hThreadUserToken))
    		{
    			if (!CheckTokenMembership( hThreadUserToken, AdministratorsGroup, &b)) 
    			{
    				b = FALSE;
    			}
    			if (AdministratorsGroup)
    			{
    				FreeSid(AdministratorsGroup); 
    			}
    		}
    		if (hThreadUserToken)
    		{
    			CloseHandle(hThreadUserToken);
    		}
    	}
    	return(b);
    }
    

      

  • 相关阅读:
    gulp备忘
    好文收藏
    妙味H5交互篇备忘
    [CSS3备忘] transform animation 等
    css选择器总结
    flexbox备忘
    函数
    继承2
    在 Swift 中实现单例方法
    浅谈 Swift 中的 Optionals
  • 原文地址:https://www.cnblogs.com/2012harry/p/3972468.html
Copyright © 2011-2022 走看看