我必须更换硬编码的" NT Authority \"使用名为DomainName的LPTSTR变量。
"域名"包含正确的" NT Authority"从系统中检测到。
问题是由于我缺乏c ++知识(我最熟悉VB.NET),我无法使其适应代码
注意:DomainName需要有一个" \"因为它的价值(在英语系统上)是" NT Authority"并且需要成为" NT Authority \"
提前感谢您的时间和精力。
以下是代码的一部分:
// Second call to LookupAccountSid to get the account name.
LookupAccountSid(
NULL, // name of local or remote computer
pSidOwner, // security identifier
AcctName, // account name buffer
(LPDWORD)&dwAcctName, // size of account name buffer
DomainName, // domain name
(LPDWORD)&dwDomainName, // size of domain name buffer
&eUse); // SID type
try
{
CString name = GetTokenUser(hToken);
const wchar_t arg[] = L"NT AUTHORITY\\";
if(0 == _wcsnicmp(name, arg, sizeof(arg)/sizeof(arg[0])-1))
{
CloseHandle(hProcess);
return hToken;
}
}
catch(...)
{
_ASSERT(0);
}
答案 0 :(得分:1)
比较时,数据类型应相等:
CString name = GetTokenUser(hToken);
const CString key = L"NT AUTHORITY\\";
if (name == key)
{
//...
}
您可能希望在比较之前将name
转换为全部大写。检查CString的方法。
如果出现问题,您应该使用CString的宽字符版本。在编译多字节或UTF字符集时,我不确定这种Microsoft憎恶是否会自动调整。