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失败
错误代码
参考:
希望能帮助你