none
API LsaLookupSids 返回乱码 RRS feed

  • 问题

  • 定义了一个函数 用于把SID转换成用户名

    PLSA_TRANSLATED_NAME GetUserNameBySID(LSA_HANDLE pHandle, PSID *pSids, ULONG count, PLSA_REFERENCED_DOMAIN_LIST *pDomain){
    PLSA_TRANSLATED_NAME pNames;
    NTSTATUS ntStatus = LsaLookupSids(pHandle,  count, pSids, pDomain, &pNames);

            .......}

    在这里pSids总是只有一个SID,count也总是为1;

    然后发现输出结果总是有会乱码,断点定位到LsaLookupSids下一句,发现LsaLookupSids API 返回的pNames变量就存在乱码,(环境为VS2013 update3  WIN10 X64 1607 14393.447)比如:

    L"Backup Operators督࿛᳝谀ᐘÚ夀Ü" 
    L"Backup Operators鋷♪៝耀៘盕궙駞\x2"

    然后换到WinServer2008 R2 运行程序发现还是一样:

    Administratorsrs檕濂

    除外这些有乱码外,其它的就没有 比如:

    NETWORK SERVICE 、LOCAL SERVICE、UsersNT、GUEST

    为什么会这样,是不是少一此处理步骤?

    2016年11月28日 2:39