我正在尝试读取 C:\Windows\System32\dhcp 中的 DHCP 服务器日志。
最初,我尝试用日志,但 nxlog 抱怨文件不存在。然后我打开 Python IDLE shell(以管理员身份)并尝试列出 C:\Windows\System32\dhcp 的内容(python 命令:os.listdir('C:\Windows\System32\dhcp')),它说“系统找不到指定的路径”。
我猜是权限问题,但我对 Windows 权限不够熟悉,无法弄清楚。python 脚本可以列出 C:\Windows\System32 的内容,因此我认为到目前为止权限都没有问题。右键单击“dhcp”文件夹,我看到列出的所有“组或用户名”至少对该文件夹具有“读取和执行”权限,所以我不知道还要更改什么。
谢谢
答案1
当然,首先要确保这些文件位于文件夹中。您还应该直接检查文件的权限。权限不一定同样适用于子对象。
答案2
我不确定这对您来说是否仍然是个问题,但是如果您使用 SysNative 代替 System32,这个问题似乎可以解决,例如:
<Input dhcplogs>
Module im_file
File "C:\\Windows\\Sysnative\\dhcp\\DhcpSrvLog-*.log"
SavePos TRUE
InputType LineBased
Exec $Message = $raw_event;
</Input>
我对它的理解还不够深入,但下面这段此 msdn 页面表示它与 32 位和 64 位应用程序的相互作用有关:
32 位应用程序可以通过将 %windir%\Sysnative 替换为 %windir%\System32 来访问本机系统目录。WOW64 将 Sysnative 识别为一个特殊别名,用于指示文件系统不应重定向访问。此机制灵活且易于使用,因此,它是绕过文件系统重定向的推荐机制。请注意,64 位应用程序无法使用 Sysnative 别名,因为它是一个虚拟目录,而不是真实目录。