[英]EvtExportLog API is saving eventlog of remote machine in remote PC itself. How can I save it to host PC?
我使用EvtOpenSession
API 創建到遠程機器EvtExportLog
的會話,然后使用會話句柄調用EvtExportLog
API。 我需要主機 PC 中的事件日志文件(我在其中運行此應用程序),但此 API 正在將事件日志轉儲到遠程機器本身。 我應該怎么做才能在主機 PC 中獲取事件日志?
我也嘗試過在主機 PC 中使用共享路徑(而不是 _T("C:\\Test\\EventLogApplication.evt") 我使用了 _T("\\\\ComputerName\\Events\\EventLogApplication.evt")。在這種情況下,我是收到訪問沖突錯誤。
這是我使用的代碼片段
......
hRemote = EvtOpenSession(EvtRpcLogin, &Credentials, 0, 0);
if (hRemote)
{
if (!EvtExportLog(hRemote, _T("Application"), NULL,_T("C:\\Test\\EventLogApplication.evt"), EvtExportLogChannelPath))
{
std::cout << "Error-Code : " << GetLastError() << std::endl;
}
}
......
據我所知, EvtExportLog
不能用於將遠程機器的EvtExportLog
保存到主機 PC。 但是對於這個問題,您可以使用解決方法。
因為此行為是設計的,因為所有操作都基於 RPC 服務器。 要將事件日志保存在本地 PC 上,我們可以在遠程 PC 上創建一個共享文件夾,用於保存遠程事件日志。
參考: 如何在遠程系統上創建文件共享?
日志保存在遠程PC上后,我們可以使用CopyFile將日志從遠程PC上的共享文件夾復制到本地PC。
注意:Windows 7、Windows Server 2008 R2、Windows Server 2008、Windows Vista、Windows Server 2003 和 Windows XP:在 Windows 8 和 Windows Server 2012 之前,不會將現有文件的安全資源屬性復制到新文件中。
現有文件的文件屬性被復制到新文件中。 例如,如果現有文件具有 FILE_ATTRIBUTE_READONLY 文件屬性,則通過調用 CopyFile 創建的副本也將具有 FILE_ATTRIBUTE_READONLY 文件屬性。 有關更多信息,請參閱檢索和更改文件屬性。
如果目標文件已經存在並且設置了 FILE_ATTRIBUTE_HIDDEN 或 FILE_ATTRIBUTE_READONLY 屬性,則此函數將失敗並顯示 ERROR_ACCESS_DENIED。
當 CopyFile 用於復制加密文件時,它會嘗試使用加密源文件時使用的密鑰來加密目標文件。 如果無法做到這一點,該函數將嘗試使用默認密鑰加密目標文件。 如果這兩種方法都無法完成,則 CopyFile 將失敗並顯示 ERROR_ENCRYPTION_FAILED 錯誤代碼。
參考: https : //docs.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-copyfile#remarks
希望能幫到你。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.