当前位置: 首页 > news >正文

windows GetUserNameEx api使用c++

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;
}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【C#生态园】C#任务调度库大比拼:选择最适合你项目的工具
  • Hive 的窗口函数 详解
  • C# 继承父类,base指定构造函数
  • 钢管加工长度检测系统源码分享
  • 【LinuxC高级】汇总
  • 《独孤九剑》游戏源码(客户端+服务端+数据库+游戏全套源码)大小2.38G
  • rabbitmq 短信验证码
  • 控制器、运算器、存储器、I/O设备详解
  • c++常用工具类函数
  • 【sgCreateCallAPIFunctionParam】自定义小工具:敏捷开发→调用接口方法参数生成工具
  • Score-based Generative Models
  • 前端接口报错302 [已解决]
  • 多米诺骨牌游戏
  • Python提供内置正则表达式库
  • 大数据-147 Apache Kudu 常用 Java API 增删改查
  • 【技术性】Search知识
  • Git 使用集
  • gops —— Go 程序诊断分析工具
  • Javascripit类型转换比较那点事儿,双等号(==)
  • jquery cookie
  • Js基础知识(四) - js运行原理与机制
  • Mysql数据库的条件查询语句
  • QQ浏览器x5内核的兼容性问题
  • 分布式熔断降级平台aegis
  • 规范化安全开发 KOA 手脚架
  • 力扣(LeetCode)965
  • 前端代码风格自动化系列(二)之Commitlint
  • 用简单代码看卷积组块发展
  • 整理一些计算机基础知识!
  • ​ssh免密码登录设置及问题总结
  • ​七周四次课(5月9日)iptables filter表案例、iptables nat表应用
  • # Apache SeaTunnel 究竟是什么?
  • #HarmonyOS:Web组件的使用
  • $var=htmlencode(“‘);alert(‘2“); 的个人理解
  • (DFS + 剪枝)【洛谷P1731】 [NOI1999] 生日蛋糕
  • (剑指Offer)面试题34:丑数
  • (七)微服务分布式云架构spring cloud - common-service 项目构建过程
  • (算法)大数的进制转换
  • (循环依赖问题)学习spring的第九天
  • (原)记一次CentOS7 磁盘空间大小异常的解决过程
  • (转)Android学习系列(31)--App自动化之使用Ant编译项目多渠道打包
  • (转)http协议
  • (转)IIS6 ASP 0251超过响应缓冲区限制错误的解决方法
  • (转)用.Net的File控件上传文件的解决方案
  • .[hudsonL@cock.li].mkp勒索病毒数据怎么处理|数据解密恢复
  • .class文件转换.java_从一个class文件深入理解Java字节码结构
  • .Net MVC4 上传大文件,并保存表单
  • .net开发时的诡异问题,button的onclick事件无效
  • @SpringBootConfiguration重复加载报错
  • @Valid和@NotNull字段校验使用
  • [20181219]script使用小技巧.txt
  • [ai笔记3] ai春晚观后感-谈谈ai与艺术
  • [Android开源]EasySharedPreferences:优雅的进行SharedPreferences数据存储操作
  • [C++] 模拟实现list(二)
  • [C++][opencv]基于opencv实现photoshop算法可选颜色调整