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

📄 utils.cpp

📁 MPICH是MPI的重要研究,提供了一系列的接口函数,为并行计算的实现提供了编程环境.
💻 CPP
字号:
/*++DCOM Permission Configuration SampleCopyright (c) 1996, Microsoft Corporation. All rights reserved.Module Name:    utils.cppAbstract:    Miscellaneous utility functionsAuthor:    Michael NelsonEnvironment:    Windows NT--*/#include "stdafx.h"#include <windows.h>#include <stdio.h>#include <conio.h>#include <tchar.h>#include "ntsecapi.h"#include "dcomperm.h"DWORDGetCurrentUserSID (    PSID *Sid    ){    TOKEN_USER  *tokenUser=NULL;    HANDLE      tokenHandle;    DWORD       tokenSize;    DWORD       sidLength;    if (OpenProcessToken (GetCurrentProcess(), TOKEN_QUERY, &tokenHandle))    {        GetTokenInformation (tokenHandle,                             TokenUser,                             tokenUser,                             0,                             &tokenSize);        tokenUser = (TOKEN_USER *) malloc (tokenSize);        if (GetTokenInformation (tokenHandle,                                 TokenUser,                                 tokenUser,                                 tokenSize,                                 &tokenSize))        {            sidLength = GetLengthSid (tokenUser->User.Sid);            *Sid = (PSID) malloc (sidLength);            memcpy (*Sid, tokenUser->User.Sid, sidLength);            CloseHandle (tokenHandle);        } else        {            free (tokenUser);            return GetLastError();        }    } else    {        free (tokenUser);        return GetLastError();    }    free (tokenUser);    return ERROR_SUCCESS;}DWORDGetPrincipalSID (    LPTSTR Principal,    PSID *Sid    ){    DWORD        sidSize;    TCHAR        refDomain [256];    DWORD        refDomainSize;    DWORD        returnValue;    SID_NAME_USE snu;    sidSize = 0;    refDomainSize = 255;    LookupAccountName (NULL,                       Principal,                       *Sid,                       &sidSize,                       refDomain,                       &refDomainSize,                       &snu);    returnValue = GetLastError();    if (returnValue != ERROR_INSUFFICIENT_BUFFER)        return returnValue;    *Sid = (PSID) malloc (sidSize);    refDomainSize = 255;    if (!LookupAccountName (NULL,                            Principal,                            *Sid,                            &sidSize,                            refDomain,                            &refDomainSize,                            &snu))    {        return GetLastError();    }    return ERROR_SUCCESS;}LPTSTRSystemMessage (    LPTSTR Buffer,    HRESULT hr    ){    LPTSTR   message;    FormatMessage (FORMAT_MESSAGE_ALLOCATE_BUFFER |                   FORMAT_MESSAGE_FROM_SYSTEM,                   NULL,                   hr,                   MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),                   (LPTSTR) &message,                   0,                   NULL);    wsprintf (Buffer, TEXT("%s(%lx)\n"), message, hr);        LocalFree (message);    return Buffer;}

⌨️ 快捷键说明

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