⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 usecurity.cpp

📁 可以实现对邮件的加密解密以及签名
💻 CPP
字号:
/*____________________________________________________________________________
		Copyright (C) 2002 PGP Corporation
        All rights reserved.

        $Id: USecurity.cpp,v 1.4 2002/08/06 20:10:46 dallen Exp $
____________________________________________________________________________*/

#include "pgpClassesConfig.h"

#include "UDynLink.h"
#include "UMath.h"
#include "USecurity.h"

_USING_PGP

_UNNAMED_BEGIN

#ifndef SM_REMOTESESSION
enum {SM_REMOTESESSION = 0x1000};
#endif

_UNNAMED_END


// Functions

PGPBoolean 
USecurity::IsCurrentUserAdmin()
{
	HANDLE	hAccessToken;

	if (!UDynLink::WinNT_OpenThreadToken(GetCurrentThread(), TOKEN_QUERY, 
		TRUE, &hAccessToken))
	{
		if (GetLastError() != ERROR_NO_TOKEN)
			return FALSE;
		
		// Retry against process token if no thread token exists.
		if (!UDynLink::WinNT_OpenProcessToken(GetCurrentProcess(), 
			TOKEN_QUERY, &hAccessToken))
		{
			return FALSE;
		}
	}
	
	BOOL	bSuccess;
	UCHAR	infoBuffer[1024];
	DWORD	dwInfoBufferSize;

	bSuccess = UDynLink::WinNT_GetTokenInformation(hAccessToken, 
		TokenGroups, infoBuffer, 1024, &dwInfoBufferSize);
	
	CloseHandle(hAccessToken);
	
	if (!bSuccess )
		return FALSE;
	
	PSID						psidAdministrators;
	SID_IDENTIFIER_AUTHORITY	siaNtAuthority	= SECURITY_NT_AUTHORITY;

	if (!UDynLink::WinNT_AllocateAndInitializeSid(&siaNtAuthority, 2, 
		SECURITY_BUILTIN_DOMAIN_RID, DOMAIN_ALIAS_RID_ADMINS, 0, 0, 0, 0, 
		0, 0, &psidAdministrators))
	{
		return FALSE;
	}
	
	// Assume that we don't find the admin SID.
	bSuccess = FALSE;
	
	PTOKEN_GROUPS	ptgGroups	= reinterpret_cast<PTOKEN_GROUPS>(infoBuffer);
	UINT			x;

	for (x = 0; x < ptgGroups->GroupCount; x++)
	{
		if (UDynLink::WinNT_EqualSid(psidAdministrators, 
			ptgGroups->Groups[x].Sid))
		{
			bSuccess = TRUE;
			break;
		}		
	}

	UDynLink::WinNT_FreeSid(psidAdministrators);

	return bSuccess;
}

PGPBoolean 
USecurity::IsRemoteSession()
{
	return (GetSystemMetrics(SM_REMOTESESSION) ? TRUE : FALSE);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -