C++ EvtExportLog API正在将远程计算机的事件日志保存在远程PC本身中。如何将其保存到主机PC?

C++ EvtExportLog API正在将远程计算机的事件日志保存在远程PC本身中。如何将其保存到主机PC?,c++,windows,winapi,event-log,C++,Windows,Winapi,Event Log,我使用了EvtOpenSessionAPI来创建远程机器事件日志的会话,然后使用会话句柄调用EvtExportLogAPI。我需要主机PC中的eventlog文件(我运行此应用程序的地方),但此API正在将eventlog转储到远程计算机本身。我应该如何在主机PC中获取事件日志 我也尝试过在主机PC中使用共享路径(而不是使用了“\\ComputerName\Events\EventLogApplication.evt”)。在这种情况下,我遇到了访问冲突错误 下面是我使用的代码片段 ......

我使用了
EvtOpenSession
API来创建远程机器事件日志的会话,然后使用会话句柄调用
EvtExportLog
API。我需要主机PC中的eventlog文件(我运行此应用程序的地方),但此API正在将eventlog转储到远程计算机本身。我应该如何在主机PC中获取事件日志

我也尝试过在主机PC中使用共享路径(而不是使用了“\\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;
   }

}

......
。。。。。。
hRemote=EvtOpenSession(EvtRpcLogin和凭证,0,0);
如果(hRemote)
{
如果(!EvtExportLog(hRemote,_T(“应用”),NULL,_T(“C:\\Test\\EventLogApplication.evt”),EvtExportLogChannelPath)
{

std::cout据我所知,
EvtExportLog
不能用于将远程计算机的事件日志保存到主机PC。但是对于这个问题,您可以使用解决方法

因为此行为是由设计的,因为所有操作都基于RPC服务器。要在本地PC上保存事件日志,我们可以在远程PC上创建一个共享文件夹,用于保存远程事件日志

参考:

在远程PC上保存日志后,我们可以使用将日志从远程PC上的共享文件夹复制到本地PC

注意:Windows 7、Windows Server 2008 R2、Windows Server 2008、Windows Vista、Windows Server 2003和Windows XP:安全资源 现有文件的属性不会复制到新文件,直到 Windows 8和Windows Server 2012

现有文件的文件属性将复制到新文件。对于 例如,如果现有文件具有file_属性_readonlyfile 属性,通过调用CopyFile创建的副本也将具有 文件属性\u只读文件属性。有关详细信息,请参阅 检索和更改文件属性

如果目标文件被删除,此函数将失败,错误为\u访问\u被拒绝 已存在并隐藏了文件属性或 文件\属性\只读属性集

当CopyFile用于复制加密文件时,它会尝试 使用加密中使用的密钥加密目标文件 源文件。如果无法执行此操作,此函数将尝试 使用默认密钥加密目标文件。如果 方法,CopyFile失败并出现错误\u加密\u失败 错误代码

参考:

希望能帮助你