需要有关变量转换的帮助,并在现有变量值中添加“\”

时间:2014-06-12 17:43:11

标签: c++ variables

我必须更换硬编码的" 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);
 }

1 个答案:

答案 0 :(得分:1)

比较时,数据类型应相等:

CString name = GetTokenUser(hToken);
const CString key = L"NT AUTHORITY\\";
if (name == key)
{
  //...
}

您可能希望在比较之前将name转换为全部大写。检查CString的方法。

如果出现问题,您应该使用CString的宽字符版本。在编译多字节或UTF字符集时,我不确定这种Microsoft憎恶是否会自动调整。