C++ TranslateName()函数不使用';我不能在win10上工作

C++ TranslateName()函数不使用';我不能在win10上工作,c++,sspi,C++,Sspi,我的工作电脑是win10,我使用的是vs2015, 现在我遇到了一个奇怪的问题。我可以通过以下源代码获得名称兼容名称: const int UNLEN = 100; TCHAR Username[UNLEN + 1]; DWORD nULen = UNLEN; GetUserNameEx(NameSamCompatible, Username, &nULen); 用户名为“PROD\wwu2”,但如果运行以下命令,则会失败: char trans_name[100]; ULONG ul

我的工作电脑是win10,我使用的是vs2015, 现在我遇到了一个奇怪的问题。我可以通过以下源代码获得名称兼容名称:

const int UNLEN = 100;
TCHAR Username[UNLEN + 1];
DWORD nULen = UNLEN;
GetUserNameEx(NameSamCompatible, Username, &nULen);
用户名为“PROD\wwu2”,但如果运行以下命令,则会失败:

char trans_name[100];
ULONG ulSize = 100;
BYTE n = TranslateName(Username, NameSamCompatible, NameDnsDomain, trans_name, &ulSize);
然后通过GetLastError()获取错误代码;它是1317(用户不存在)。 但是用户名是我通过GetUserNameEx得到的,我没有做任何更改

整个源代码是:

#include "stdafx.h"

#include <Windows.h>
#include <sspi.h>
#include <secext.h>
#include <ntdsapi.h>

int main()
{
const int UNLEN = 100;
TCHAR Username[UNLEN + 1];
DWORD nULen = UNLEN;

GetUserNameEx(NameSamCompatible, Username, &nULen);


char trans_name[100];
ULONG ulSize = 100;

BYTE n = TranslateName(Username, NameSamCompatible, NameDnsDomain, trans_name, &ulSize);

int c = GetLastError();
return 0;
}
#包括“stdafx.h”
#包括
#包括
#包括
#包括
int main()
{
常数int UNLEN=100;
TCHAR用户名[UNLEN+1];
德沃德·努伦=乌伦;
GetUserNameEx(NameSamCompatible、Username和nULen);
字符转换名称[100];
ULONG ulSize=100;
字节n=TranslateName(用户名、名称兼容、名称域、trans_名称和ulSize);
int c=GetLastError();
返回0;
}

如果在TranslateName调用后在此处发布GetLastError()值,这将非常有用。另外,你确定你的用户名是属于某个域的用户名吗?错误代码是1317(用户不存在),但用户名是我通过GetUserNameEx获得的用户名,我没有做任何更改。顺便说一下,我也尝试过api:DsCrackNames和IADsNameTranslate,两者都不能达到我的目的,我想将我的域名从nt4域名转换为dns域名(PROD\wwu2->PROD.company.com\wwu2),但这两个API不支持dns域名格式。如果在TranslateName调用后在此处发布GetLastError()值,这将非常有帮助。另外,你确定你的用户名是属于某个域的用户名吗?错误代码是1317(用户不存在),但用户名是我通过GetUserNameEx获得的用户名,我没有做任何更改。顺便说一下,我也尝试过api:DsCrackNames和IADsNameTranslate,两者都不能达到我的目的,我想将我的域名从nt4域名转换为dns域名(PROD\wwu2->PROD.company.com\wwu2),但这两个API不支持dns域名格式