函数原型:
BOOLEAN WINAPI GetUserNameEx( _In_ EXTENDED_NAME_FORMAT NameFormat, _Out_ LPTSTR lpNameBuffer, _Inout_ PULONG lpnSize );
头文件包含:
#include "Security.h" #pragma comment(lib,"Secur32.lib")
如果编译报错如下:
C:\WinDDK\7600.16385.1\inc\api\sspi.h(60) : fatal error C1189: #error : You must define one of SECURITY_WIN32, SECURITY_KERNEL, or
请在所有头文件前面加上
#define SECURITY_WIN32即可。
使用方法如下:
void getUserNameEx() { WCHAR wzUser[MAX_PATH] = {0}; ULONG buf_size = 0; // 需要注意的是,第一次调用GetUserNameEx,第二个参数为NULL,第三个参数一定要为0,否则出现内存访问错误。 GetUserNameEx(NameSamCompatible, NULL, &buf_size); GetUserNameEx(NameSamCompatible, wzUser, &buf_size); wcout << L"User:" << wzUser << endl; }
文章参考:
http://blog.csdn.net/shen_001/article/details/39317565
http://msdn.microsoft.com/en-us/library/windows/desktop/ms724435(v=vs.85).aspx