使用 GetFileSizeEx 获取不正确的句柄作为错误
我的目标是使用 c++ 查找 (%SystemRoot%\System32\winevt\logs) 中存在的日志文件的大小(例如:获取 Application.evtx 的文件大小)。我尝试使用 GetFileSizeEx (https://learn .microsoft.com/fr-fr/windows/win32/api/fileapi/nf-fileapi-getfilesizeex) 方法,但我收到错误,例如传递了错误的句柄。将三个句柄 (EvtQuery、EvtGetChannelConfigProperty、OpenEventLog) 传递给 GetFileSizeEx 但我收到相同的错误。我可以知道应该传递什么句柄来获取大小:
找到类似的问题(如何使用 EvtQuery 函数查找日志文件的大小?)。尝试了这个,但我得到了无效的句柄作为 GetFileSizeEx 的错误。
My goal is to find the size of log files which is present in (%SystemRoot%\System32\winevt\logs) using c++ (For Eg : To get the file size of Application.evtx). I tried with GetFileSizeEx (https://learn.microsoft.com/fr-fr/windows/win32/api/fileapi/nf-fileapi-getfilesizeex) method but i got error like incorrect handle is passed. Passed three handle with (EvtQuery,EvtGetChannelConfigProperty,OpenEventLog) to GetFileSizeEx but i get the same error. Can i know what handle should be passed to get the size:
Find the similar question (How to find the size of log files using EvtQuery function?). Tried this but I got invalid handle as error with GetFileSizeEx.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
默认文件位置是
C:\Windows\System32\winevt\Logs
应用程序日志称为
Application.evtx
如果您想获取其大小
,请执行以下 操作:确保获得正确的位置,因为管理员可以移动它,然后在注册表中查找
以获取文件名
The default file location is
C:\Windows\System32\winevt\Logs
The application log is called
Application.evtx
If you want to get its size do
If you want to be sure to get the correct location becuase an admin can move it then look here in the registry
to get the file name
根据文档:GetFileSizeEx 函数
是否检查过打开文件的结果来获取文件句柄?如果文件无法打开,则说明您使用无效句柄调用
GetFileSizeEx
。According to the Doc:GetFileSizeEx function
Whether you have checked the result of opening the file to get the file handle? If the file failed to open, you're calling
GetFileSizeEx
with an invalid handle.