gpt4 book ai didi

c# - 有人知道为什么我无法在 C# 中以编程方式访问 winevt 文件夹吗?

转载 作者:行者123 更新时间:2023-12-02 14:45:56 24 4
gpt4 key购买 nike

我一直在尝试使用 C# 以编程方式进入“C:\Windows\System32\winevt\Logs”文件夹,以便我可以将事件日志文件复制到备份目录,然后清除事件日志作为日常备份设备,但我似乎无法访问该目录。

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

我已将其隔离为无法进入 winevt 目录。我使用此代码来查看是否可以访问该目录。

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

仅接收

System.IO.DirectoryNotFoundException:找不到路径“C:\Windows\system32\winevt\”的一部分。 在 System.IO.__Error.WinIOError(Int32 errorCode, String MaybeFullPath) 在 System.IO.Directory.SetCurrentDirectory(字符串路径) 在 System.Environment.set_CurrentDirectory(字符串值) 位于 D:\SourceCodes\dev_EventLog\dev_EventLog\Program.cs 中的 dev_EventLog.Program.Main(String[] args):第 30 行

我尝试了很多不同的方法来指定目录,但它们都是一样的,而且我还尝试了 System32 的不同子文件夹以及我尝试过的 10 个左右的子文件夹,winevt 是唯一一个这样做的。

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

暗淡的文件系统设置 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,您应该能够访问它。

关于c# - 有人知道为什么我无法在 C# 中以编程方式访问 winevt 文件夹吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2958081/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com