windows GetUserNameEx api使用c++

news/2024/9/25 21:36:21/
windows域账号信息获取GetUserNameExhttps://learn.microsoft.com/zh-cn/windows/win32/api/secext/ne-secext-extended_name_formatEXTENDED_NAME_FORMAT 枚举 (secext.h)
typedef enum {NameUnknown = 0,NameFullyQualifiedDN = 1,NameSamCompatible = 2,NameDisplay = 3,NameUniqueId = 6,NameCanonical = 7,NameUserPrincipal = 8,NameCanonicalEx = 9,NameServicePrincipal = 10,NameDnsDomain = 12,NameGivenName = 13,NameSurname = 14
} EXTENDED_NAME_FORMAT, *PEXTENDED_NAME_FORMAT;常量NameUnknown
值: 0
未知的名称类型。
NameFullyQualifiedDN
值:1
完全限定的可分辨名称 (例如 CN=Jeff Smith,OU=Users,DC=Engineering,DC=Microsoft,DC=Com) 。
NameSamCompatible
值: 2
旧帐户名称 (例如 Engineering\JSmith) 。 仅限域的版本包括尾随反斜杠 (\) 。
NameDisplay
值: 3
“友好”显示名称 (例如 Jeff Smith) 。 显示名称不一定是 RDN) (定义的相对可分辨名称。
NameUniqueId
值: 6
一个 GUID 字符串,该字符串
IIDFromString 函数返回 (例如{4fa050f0-f561-11cf-bdd9-00aa003a77b6}) 。
NameCanonical
值: 7
完整的规范名称 (例如,engineering.microsoft.com/software/someone) 。 仅限域的版本包含尾随正斜杠 (/) 。
NameUserPrincipal
值: 8
用户主体名称 (例如, someone@example.com) 。
NameCanonicalEx
值: 9
与 NameCanonical 相同,只不过最右边的正斜杠 (/) 替换为新的行字符 (\n) ,即使在仅域的情况下 (,engineering.microsoft.com/software\nJSmith) 也是如此。
NameServicePrincipal
值: 10
通用化服务主体名称 (,例如 www/www.microsoft.com@microsoft.com) 。
NameDnsDomain
值: 12
DNS 域名后跟反斜杠和 SAM 用户名。
NameGivenName
值: 13
用户的名字或给定名称。 注意:此类型仅适用于 Active Directory 用户的 GetUserNameEx 调用。
NameSurname
值: 14
用户的姓氏。 注意:此类型仅适用于 Active Directory 用户的 GetUserNameEx 调用。
要求
要求	值
最低受支持的客户端	Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器	Windows 2000 Server [仅限桌面应用]
标头	secext.h (包括 Security.h)例子:#include <iostream>
#include <tchar.h>
#include <string>
#include <stdio.h>
#include <windows.h>
#define SECURITY_WIN32 1
#include <security.h>
#undef SECURITY_WIN32
#include <wincred.h>
#pragma comment(lib, "Secur32.lib")namespace test {// unknown name typeconst char kNameUnknown[] = "NameUnknown";// CN=John Doe, OU=Software, OU=Engineering, O=Widget, C=USconst char kNameFullyQualifiedDN[] = "NameFullyQualifiedDN";// Engineering\JohnDoeconst char kNameSamCompatible[] = "NameSamCompatible";// Probably "John Doe" but could be something else.  I.e. The// display name is not necessarily the defining RDN.const char kNameDisplay[] = "NameDisplay";// String-ized GUID as returned by IIDFromString().// eg: {4fa050f0-f561-11cf-bdd9-00aa003a77b6}const char kNameUniqueId[] = "NameUniqueId";// engineering.widget.com/software/John Doeconst char kNameCanonical[] = "kNameCanonical";// someone@example.comconst char kNameUserPrincipal[] = "NameUserPrincipal";// Same as NameCanonical except that rightmost '/' is// replaced with '\n' - even in domain-only case.// eg: engineering.widget.com/software\nJohn Doeconst char kNameCanonicalEx[] = "NameCanonicalEx";// www/srv.engineering.com/engineering.comconst char kNameServicePrincipal[] = "NameServicePrincipal";// DNS domain name + SAM username// eg: engineering.widget.com\JohnDoeconst char kNameDnsDomain[] = "NameDnsDomain";std::wstring GetUserNameByIndex(_In_ EXTENDED_NAME_FORMAT NameFormat) {WCHAR username[CREDUI_MAX_USERNAME_LENGTH + 1] = { 0 };DWORD username_length = sizeof(username);// someone@example.com 域账号登录下有值 非域无值if (!::GetUserNameEx(NameFormat, username, &username_length) ||username_length <= 0) {return std::wstring();}return std::wstring(username);}
};int main()
{  std::wcout <<test::GetUserNameByIndex(::NameFullyQualifiedDN).c_str();return 0;
}


http://www.ppmy.cn/news/1530458.html

相关文章

设计模式之责任链

一、责任链设计模式概念 责任链模式&#xff08;Chain Of Responsibility&#xff09; 是一种行为设计模式&#xff0c; 允许你将请求沿着处理者链进行发送。 收到请求后&#xff0c; 每个处理者均可对请求进行处理&#xff0c; 或将其传递给链上的下个处理者。 使多个对象都有…

研一上课计划2024/9/23有感

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、学位课1.应用数理统计&#xff08;学3 开卷考试&#xff09;2.最优化方法&#xff08;学3 开卷考试&#xff09;3.新中特&#xff08;学2 三千五百字的品读…

【基础算法总结】模拟篇

目录 一&#xff0c;算法介绍二&#xff0c;算法原理和代码实现1576.替换所有的问号495.提莫攻击6.Z字形变换38.外观数列1419.数青蛙 三&#xff0c;算法总结 一&#xff0c;算法介绍 模拟算法本质就是"依葫芦画瓢"&#xff0c;就是在题目中已经告诉了我们该如何操作…

常见服务端口号和中文大全

ServiceChinesePortExplainFTP文件传输协议20数据FTP文件传输协议21连接SSH安全外壳协议22SMTP简单邮件传输协议25DNS域名解析协议53DHCP动态主机配置协议67服务端DHCP动态主机配置协议68客户端HTTP超文本传输协议80Kerberos网络认证协议88POP3邮局协议110RPC远程过程调用111IM…

【系统架构】服务端高并发分布式结构演进之路

文章目录 一. 常见概念1. 基本概念应用&#xff08;Application&#xff09;/ 系统&#xff08;System&#xff09;模块&#xff08;Module&#xff09;/ 组件&#xff08;Component&#xff09;分布式&#xff08;Distributed&#xff09;集群&#xff08;Cluster&#xff09;…

Trace纳米侦查无人机技术详解

纳米无人机&#xff0c;作为微型无人机的一种&#xff0c;通常指尺寸和重量都非常小的无人机&#xff0c;其重量一般不超过几百克&#xff0c;甚至更小。这类无人机由于体积小、重量轻&#xff0c;具备高度的隐蔽性和灵活性&#xff0c;在军事侦察、环境监测、搜救行动等领域具…

删除topic提示admin token

这个admin token不是admin的密码&#xff0c;而是如下配置文件中的值&#xff1a; 否则报错&#xff1a; 检查&#xff1a; [rootk1 conf]# pwd /opt/kafka-web/efak-web-3.0.1/conf [rootk1 conf]# grep token system-config.properties # delete kafka topic token efak.t…

HarmonyOS Next开发----使用XComponent自定义绘制

XComponent组件作为一种绘制组件&#xff0c;通常用于满足用户复杂的自定义绘制需求&#xff0c;其主要有两种类型"surface和component。对于surface类型可以将相关数据传入XComponent单独拥有的NativeWindow来渲染画面。 由于上层UI是采用arkTS开发&#xff0c;那么想要…