WinEvent 日志和 QFileSystemWatcher
WinEvent Logs and QFileSystemWatcher
我尝试将 WinEvent 日志 Windows7 添加到 QFileSystemWatcher.However、addPath()
方法 return false
值。
qDebug() << m_watcher->addPath("C:/Windows/System32/winevt/Logs/Application.evtx"); // false
我在尝试添加 winevt 文件夹后得到的结果相同:
qDebug() << m_watcher->addPath("C:/Windows/System32/winevt"); // false
Winevt 文件夹有只读属性,我不能修改它(更改、应用、关闭和重新打开属性后旧保留)。
我阅读了 QFileSystemWatcher 文档:
Reasons for a watch failure are generally system-dependent, but may include the resource not existing, access failures, or the total watch count limit, if the platform has one.
但我不知道如何找到故障源以及如何修复它。
提前致谢。
我相信您在 64 位 OS 上获得了文件系统重定向。
有两种方法可以解决这个问题:
1) 将您的应用程序构建为 64 位。
2) 通过调用 Wow64DisableWow64FsRedirection
.
明确禁用系统重定向
如果您使用第二种解决方案并且需要您的应用程序 运行 在 Windows XP 32 位上,我建议您像下面的示例一样动态调用 WinAPI:
#include <qt_windows.h>
#if defined(_WIN32) //Check if program is compiled in 32 bits (64 bits does not have redirection)
SYSTEM_INFO SystemInfo = {0};
GetNativeSystemInfo(&SystemInfo);
if (SystemInfo.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_AMD64) //Check if processor is 64 bits
{
//Call the Wow64DisableWow64FsRedirection api dynamically
typedef BOOL(STDAPICALLTYPE *tWow64DisableWow64FsRedirection)(PVOID);
tWow64DisableWow64FsRedirection pWow64DisableWow64FsRedirection = (tWow64DisableWow64FsRedirection)QLibrary::resolve("Kernel32", "Wow64DisableWow64FsRedirection");
if (pWow64DisableWow64FsRedirection)
pWow64DisableWow64FsRedirection(NULL);
}
#endif
在另一个论坛上找到解决方案,用户给出 link。
Sysnative 文件夹可以访问。
谢谢大家
我尝试将 WinEvent 日志 Windows7 添加到 QFileSystemWatcher.However、addPath()
方法 return false
值。
qDebug() << m_watcher->addPath("C:/Windows/System32/winevt/Logs/Application.evtx"); // false
我在尝试添加 winevt 文件夹后得到的结果相同:
qDebug() << m_watcher->addPath("C:/Windows/System32/winevt"); // false
Winevt 文件夹有只读属性,我不能修改它(更改、应用、关闭和重新打开属性后旧保留)。 我阅读了 QFileSystemWatcher 文档:
Reasons for a watch failure are generally system-dependent, but may include the resource not existing, access failures, or the total watch count limit, if the platform has one.
但我不知道如何找到故障源以及如何修复它。 提前致谢。
我相信您在 64 位 OS 上获得了文件系统重定向。
有两种方法可以解决这个问题:
1) 将您的应用程序构建为 64 位。
2) 通过调用 Wow64DisableWow64FsRedirection
.
如果您使用第二种解决方案并且需要您的应用程序 运行 在 Windows XP 32 位上,我建议您像下面的示例一样动态调用 WinAPI:
#include <qt_windows.h>
#if defined(_WIN32) //Check if program is compiled in 32 bits (64 bits does not have redirection)
SYSTEM_INFO SystemInfo = {0};
GetNativeSystemInfo(&SystemInfo);
if (SystemInfo.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_AMD64) //Check if processor is 64 bits
{
//Call the Wow64DisableWow64FsRedirection api dynamically
typedef BOOL(STDAPICALLTYPE *tWow64DisableWow64FsRedirection)(PVOID);
tWow64DisableWow64FsRedirection pWow64DisableWow64FsRedirection = (tWow64DisableWow64FsRedirection)QLibrary::resolve("Kernel32", "Wow64DisableWow64FsRedirection");
if (pWow64DisableWow64FsRedirection)
pWow64DisableWow64FsRedirection(NULL);
}
#endif
在另一个论坛上找到解决方案,用户给出 link。
Sysnative 文件夹可以访问。
谢谢大家