答案1
当你在文件管理器中看到一个可执行文件却找不到它时,通常是因为你运行的是 32 位 shell,因为 32 位进程被置于文件系统重定向器System32
实际上是。SysWOW64
一些相关问题:
- 为什么我无法从 Windows 8 命令提示符启动 telnet.exe?
- 找不到 query.exe
- 仅当从我的程序打开 CMD 时才出现奇怪的 CMD 错误
- Windows 上的 GNU Make 无法看到某些可执行文件
在这种情况下%windir%\Sysnative\certutil
可以工作,尽管更好的方法是运行 64 位 shell
然而看起来那不是你的情况因为您可以在 System32 中看到 certutil.exe。因此有两种可能性:
你的
PATH
环境变量已损坏,因此certutil.exe
无法找到。%windir%\System32
必须始终位于PATH
。以下是我的 PC 上的一个示例:PS C:\Users> $env:Path -replace';',“`n” 目录:\WINDOWS\system32 目录:\WINDOWS 目录:\WINDOWS\System32\Wbem C:\WINDOWS\System32\WindowsPowerShell\v1.0\ 目录:\WINDOWS\System32\OpenSSH\ C:\Program Files\dotnet\ C:\Users\用户\AppData\Local\Microsoft\WindowsApps C:\Users\用户\.dotnet\tools
与 cmd 不同,PowerShell
PATH
首先查找文件出于安全原因,如 POSIX shell。因此,即使您在里面,%windir%\System32
它仍然不会运行该 exe 文件,您需要改用.\certutil
。您的
PATHEXT
环境变量已损坏。当您键入不带扩展名的命令时,shell 将查找该扩展名,并且COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC;.CPL
默认包含。如果没有,.exe
则无法找到您的文件。您需要certutil.exe
明确运行
不管怎样,你的系统可能在某种程度上被破坏了,你需要运行sfc /scannow
修复系统文件和环境
答案2
在 powershell 下,必须在可执行文件名称前加上前缀.\
。
尝试.\certutil.exe
使用老式的 cmd 而不是 powershell。