2015-04-12 53 views
0

我嘗試將WinEvent日誌Windows7添加到QFileSystemWatcher.However,但addPath()方法返回false值。WinEvent日誌和QFileSystemWatcher

qDebug() << m_watcher->addPath("C:/Windows/System32/winevt/Logs/Application.evtx"); // false 

同樣試圖添加winevt文件夾後,我得到:

qDebug() << m_watcher->addPath("C:/Windows/System32/winevt"); // false 

Winevt文件夾具有隻讀屬性,我不能修改(變更後,應用,關閉和重新打開屬性有老留下)。 我讀QFileSystemWatcher文檔中:

原因手錶故障一般是系統相關的,但是可能包括資源不存在,訪問故障,或總觀看次數的限制,如果平臺有一個。

但我不知道如何找到失敗的來源以及如何修復它。 在此先感謝。

+0

您是否以管理員身份運行應用程序? –

+0

是的,但這不是一個原因。我找到解決辦法。 –

回答

0

尋找解決方案,其中用戶給出link

系統文件夾能夠訪問。

謝謝大家。

0

我相信你在64位操作系統上獲得了文件系統重定向。

有兩種方法來解決這個問題:

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