我一直在尝试使用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"
您的应用程序是否在64位版本的Windows上作为32位应用程序运行?如果是,则将任何访问权限%windir%\System32重定向到%windir%\SystemWOW64(没有winevt目录的地方).
如果您使用,%windir%\Sysnative\winevt您应该能够访问它.
| 归档时间: |
|
| 查看次数: |
7307 次 |
| 最近记录: |