获取Windows系统当前用户的用户名和SID

作者:佚名 上传时间:2023-05-01 运行软件:Microsoft Visual Studio Community 2019 软件版本:Windows SDK 10.0.17763.0 版权申诉

该示例代码演示了如何通过Windows API获取当前用户的用户名和安全标识符(SID),涉及到较为深入的系统编程知识,需要了解Windows API相关内容。

#include <windows.h>
#include <userenv.h>
#include <sddl.h>
#pragma comment(lib, "Userenv.lib")

int main()
{
    HANDLE tokenHandle;
    DWORD bufferSize = 0;
    PTOKEN_USER tokenUser = NULL;
    SID_NAME_USE sidType;
    WCHAR userName[256];
    DWORD userNameSize = 256;
    WCHAR domainName[256];
    DWORD domainNameSize = 256;

    // 获取当前进程的令牌句柄
    if (!OpenProcessToken(GetCurrentProcess(), TOKEN_QUERY, &tokenHandle)) 
    {
        printf("OpenProcessToken failed with error %d\n", GetLastError());
        return 1; 
    }

    // 获取令牌大小
    if (!GetTokenInformation(tokenHandle, TokenUser, NULL, 0, &bufferSize) && GetLastError() != ERROR_INSUFFICIENT_BUFFER) 
    {
        printf("GetTokenInformation failed with error %d\n", GetLastError()); 
        CloseHandle(tokenHandle);
        return 1; 
    }

    // 分配令牌结构体内存
    tokenUser = (PTOKEN_USER)LocalAlloc(LPTR, bufferSize);

    // 获取令牌信息
    if (!GetTokenInformation(tokenHandle, TokenUser, tokenUser, bufferSize, &bufferSize)) 
    {
        printf("GetTokenInformation failed with error %d\n", GetLastError());
        LocalFree(tokenUser);
        CloseHandle(tokenHandle);
        return 1; 
    }

    // 获取用户名和域名
    if (!LookupAccountSid(NULL, tokenUser->User.Sid, userName, &userNameSize, domainName, &domainNameSize, &sidType)) 
    {
        printf("LookupAccountSid failed with error %d\n", GetLastError());
        LocalFree(tokenUser);
        CloseHandle(tokenHandle);
        return 1; 
    }

    // 获取用户SID和SDDL字符串
    WCHAR* sddlString;
    ConvertSidToStringSidW(tokenUser->User.Sid, &sddlString);

    // 打印信息
    wprintf(L"UserName: %s\nDomainName: %s\nSID: %s\n", userName, domainName, sddlString);

    // 释放内存
    LocalFree(tokenUser);
    CloseHandle(tokenHandle);
    LocalFree(sddlString);

    return 0;
}

免责申明:文章和图片全部来源于公开网络,如有侵权,请通知删除 server@dude6.com

用户评论
相关推荐
获取Windows系统当前用户用户名SID
该示例代码演示了如何通过Windows API获取当前用户的用户名和安全标识符(SID),涉及到较为深入的系统编程知识,需要了解Windows API相关内容。#include <window
Windows SDK 10.0.17763.0
Microsoft Visual Studio Community 2019
2023-05-01 10:24
获取windows当前登录用户名
获取windows当前登录的用户名
ZIP
0B
2019-09-07 13:45
Python中如何获取当前Windows系统用户名
本示例代码演示如何使用python获取当前Windows系统的用户名,通过调用系统API函数实现,代码中实现方式简单清晰,适用于python初学者。import osimport ctypes
Python 3.7.3
PyCharm Community Edition 2019.1.3 x64
2023-03-22 23:50
Windows获取当前用户名
本示例代码展示了如何在Windows操作系统上使用Python编写程序来获取当前登录用户的用户名。使用了内置的os模块和系统环境变量。import osusername = os.getenv(
Windows 10 1909
Python 3.8
2023-03-17 15:20
cognos获取当前用户名
cognos获取当前用户名,cognos获取当前用户名
DOCX
0B
2019-09-19 02:47
如何在Unix系统获取当前用户用户名
本代码示例展示了如何使用C语言在Unix系统中获取当前登录用户的用户名,通过调用系统库函数getlogin和getpwuid来实现。#include <stdio.h>#include
Unix System V Release 4 (SVR4)
C语言
2023-04-20 09:58
可以查询系统用户名sidvbs
一段可以查询系统用户名的sid的vbs代码
PDF
19KB
2020-12-12 01:20
vc获取Windows系统用户名.rar
vc获取Windows系统用户名,登录的用户名,如果你的系统设置有密码,则开机后在进入Windows系统时会提示输入用户名和密码,本程序即是获取登录时的用户名,不包括密码,如截图所示,程序简单,不多介
RAR
0B
2019-09-04 03:52
获取windows系统登录用户名
获取Windows系统当前登录的用户名称
RAR
0B
2018-12-21 02:22
Windows系统获取当前登录用户名方法及示例代码
本文介绍了在Windows系统中获取当前登录用户名的方法,并提供了示例代码来演示其实现方式。通过这个代码示例,用户可以了解如何使用Windows API来获取当前登录用户名,以及相关的技术解答。im
Windows 10及以上
任何能运行Python的IDE或文本编辑器
2023-10-21 13:59