有一个VB.Net应用程序,我试图调用klist.exe来清除缓存的Kerberos票。
Dim klist As New ProcessStartInfo("C:\Windows\System32\klist.exe")
klist.Arguments = "purge"
Process.Start(klist)调试器发出:
System.ComponentModel.Win32Exception: 'The system cannot find the file specified'该文件显然存在,并且可以在没有命令提示符提升的权限的情况下运行。
这是什么蠢事?还是我太累了以至于错过了一些显而易见的东西?
发布于 2021-01-03 17:57:09
在64位机器上,c:\windows\system32中的文件是64位文件,c:\windows\SysWOW64中的文件是32位文件(是的.我知道你要说什么)。操作系统中的背景重定向确保尝试访问c:\windows\system32的32位程序被重定向到c:\windows\syswow64,这样他们就可以从system32中找到他们认为想要的32位文件。考虑到klist.exe是在system32中,因此它是64位(至少对我来说,ymmv),你的应用程序找不到它就意味着它很可能是32位,并且被重定向到不包含klist.exe的syswow64文件夹。另一方面,您的控制台会话没有这个比特性问题,正在使用system32文件夹/查找klist.exe
将应用程序设置为64位;将目标CPU设置为x64或使其为AnyCPU,并关闭“偏好32位”复选框
https://stackoverflow.com/questions/65547978
复制相似问题