WinAPI LookupAccountSid from an .evt file
WinAPI LookupAccountSid from an .evt file
我试图从.evt文件(事件日志)中获取用户SID的用户帐户名称。到目前为止,我已经成功地读取了该文件,并且在记录事件时可以访问活动用户的SID。
要从这个SID获取用户名,我使用LookupAccountSid函数:
wstring userNameFromSid(SID userSid,wstring computerName)
{
DWORD size = 256;
wchar_t * buff = (wchar_t*)malloc(sizeof(wchar_t)*size);
wchar_t * buffDomain = (wchar_t*)malloc(sizeof(wchar_t)*size);
SID_NAME_USE SidType;
wstring result;
SID tmpSid = userSid;
if(LookupAccountSid(computerName.c_str(), &tmpSid, buff, &size, buffDomain, &size, &SidType )){
result= buff;
}
else
{
/*Here some code to print error in a Message box*/
}
free(buff);
free(buffDomain);
return result;
}
当我在本地。evt文件上尝试时,这工作得很好,但我的许多。evt文件来自远程计算机,这就是问题所在。实际上,当我尝试使用远程计算机名时,我得到一个ERROR_NONE_MAPPED代码。经过多次研究,我仍然无法解决这个问题(这开始令人恼火)
:
我尝试了一个随机的假计算机名称来改进问题,我得到一个错误1722:rpc服务器不可用巫婆是预期的,所以我能够连接rpc(当我给出正确的名称时)。
提前感谢,
您正在为多个输入/输出参数使用相同的size
变量。不要那样做。而是使用单独的变量。您也没有考虑computerName
是否为空。
试试这个:
static const DWORD MAX_BUFF_SIZE = 256;
wstring userNameFromSid(SID userSid, wstring computerName)
{
wchar_t buffName[MAX_BUFF_SIZE];
DWORD buffNameSize = MAX_BUFF_SIZE;
wchar_t buffDomain[MAX_BUFF_SIZE];
DWORD buffDomainSize = MAX_BUFF_SIZE;
SID_NAME_USE SidType;
if (LookupAccountSid(!computerName.empty() ? computerName.c_str() : NULL, &userSid, buffName, &buffNameSize, buffDomain, &buffDomainSize, &SidType))
{
return buffName;
}
/*Here some code to print error in a Message box*/
return L"";
}
相关文章:
- Seg Fault Issue C++ (file IO / getline)
- 应用程序崩溃并显示"symbol _ZdlPvm, version Qt_5 not defined in file libQt5Core.so.5 with link time reference"
- Android NDK clang 编译器错误在 Windows 上显示'No such file or directory'
- File.cpp.o:OpenPose 标志 CMakeFiles/.. 的多重定义/main.cpp.o:首先在这里定
- Visual Studio C++ Project File CustomBuild Task: Filter Outp
- 已解决 - C++ 的崇高文本中的"fatal error: opencv: no such file or directory"
- 可视化 如何在C++中将字符数组转换为 FILE 类型
- 如何在从文件中读取整数时使用 file.eof()?
- "No such file or directory" C++标头问题
- 使用 sftp_open() 使用 C++ 中的 SFTP libssh 将文件从本地复制到远程时,File 返回 N
- Visual Studio "fatal error LNK1104: cannot open file"未使用或包含的库
- typedef vector size_type in header file
- make 命令创建 .file,但不创建应用程序文件
- 为什么 VScode 在 .h 文件中显示"'iostream' file not found"?
- 我在 #include < bits/stdc++h.> 放置时出错"No such file or directory"
- 使用 编译时。RES File with MinGW G++, .无法识别 RES
- fopen 在创建大量文件后因 EFBIG "File too large" 而失败
- 叮叮当当。target_include_directories "No such file or directory"
- File to std::string_view
- WinAPI LookupAccountSid from an .evt file