任何人都知道为什么我无法在C#中以编程方式访问winevt文件夹?

Joh*_*dal 2 c# events logging

我一直在尝试使用C#以编程方式进入'C:\ Windows\System32\winevt\Logs'文件夹,因此我可以将事件日志文件复制到备份目录,然后将事件日志清除为每日备份的一部分设备,但我似乎无法访问此目录.

我已经尝试将应用程序清单更改为在administrator()下运行,这给了我执行程序时的UAC提示,我甚至在NT AUHORITY\SYSTEM身份下生成一个shell来执行代码但是它仍然说这是一条无效的路径,即使我可以手动进入管理shell和SYSTEM shell下的目录.

我把它隔离到了不能进入winevt目录.我使用此代码来查看是否可以访问该目录.

Environment.CurrentDirectory = System.Environment.SystemDirectory + @"\ winevt \";

只收到

System.IO.DirectoryNotFoundException:找不到路径'C:\ Windows\system32\winevt \'的一部分.at System.IO .__ Error.WinIOError(Int32 errorCode,String maybeFullPath)at System.IO.Directory.SetCurrentDirectory(String path)at System.Environment.set_CurrentDirectory(String value)at dev_EventLog.Program.Main(String [] args)in D:\ SourceCodes\dev_EventLog\dev_EventLog\Program.cs:第30行

我已经尝试了许多不同的方法来指定目录,但它们都是一样的,我也尝试过不同的System32子文件夹和10个左右我尝试过winevt是唯一一个这样做的人.

这让我疯了,任何人都知道为什么这不能在C#下运行,或者我被迫使用VBScript来执行此操作,因为以下VBScript代码可以复制事件日志文件.

dim filesys set filesys = CreateObject("Scripting.FileSystemObject")filesys.CopyFile"C:\ Windows\System32\winevt\Logs\Application.evtx","C:\ rusl\Application.evtx"

Joh*_*sch 6

您的应用程序是否在64位版本的Windows上作为32位应用程序运行?如果是,则将任何访问权限%windir%\System32重定向到%windir%\SystemWOW64(没有winevt目录的地方).

如果您使用,%windir%\Sysnative\winevt您应该能够访问它.