VB.Net 应用程序不会启动 klist.exe 可执行文件(即使从完整路径)

有一个 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'

该文件显然存在,并且可以在没有提升权限的情况下从命令提示符运行。

这是什么鬼话?还是我太累了,我错过了一些明显的东西?

henryjiangyun 回答:VB.Net 应用程序不会启动 klist.exe 可执行文件(即使从完整路径)

在 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 并关闭“Prefer 32bit”复选框

本文链接:https://www.f2er.com/1164922.html

大家都在问