我正在开发一个程序,收集有关系统上正在运行的进程的统计信息。
我有一个代码,它检索一些常规信息,如可执行文件版本,发布者等。
代码工作正常,直到我打开lsass.exe。 当我尝试打开文件读取时,CreateFile失败,错误ERROR_FILE_NOT_FOUND。
这里是代码:
auto FileHandle = CreateFile(file_to_process.c_str(), // C:\Windows\System32\lsass.exe GENERIC_READ, FILE_SHARE_DELETE|FILE_SHARE_READ|FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); if ( INVALID_HANDLE_VALUE == FileHandle ) { int err_v = GetLastError(); // ERROR_FILE_NOT_FOUND }
此代码是系统服务的一部分,它以“SYSTEM”权限运行。
您可能与文件系统重定向器发生冲突。 尝试在c:\ windows \ system32中打开文件的32位进程被重定向到c:\ windows \ syswow64。 这是一个appcompat功能,使32位程序有机会在64位操作系统上生存。 Lsass.exe确实很特别,在64位机器上没有可用的EXE的32位版本。
可能的解决方法是: