Solution 1:

When a program cannot be found when you can see that executable in file managers then it's usually because you're running a 32-bit shell, because 32-bit processes are put under file system redirector and System32 is actually SysWOW64. Some related questions:

  • Why can't I launch telnet.exe from a Windows 8 command prompt?
  • query.exe can't be found
  • Strange CMD errors only when CMD is opened from my program
  • GNU Make on Windows cannot see some executables

In that case %windir%\Sysnative\certutil will work, although the better way would be running a 64-bit shell instead

However it seems that's not your situation because you can see certutil.exe in System32. So there are 2 possibilities:

  • Your PATH environment variable is broken so certutil.exe can't be found. %windir%\System32 must always be in PATH. Here's an example on my PC:

    PS C:\Users> $env:Path -replace ';', "`n"
    C:\WINDOWS\system32
    C:\WINDOWS
    C:\WINDOWS\System32\Wbem
    C:\WINDOWS\System32\WindowsPowerShell\v1.0\
    C:\WINDOWS\System32\OpenSSH\
    C:\Program Files\dotnet\
    C:\Users\user\AppData\Local\Microsoft\WindowsApps
    C:\Users\user\.dotnet\tools
    

    Unlike cmd, PowerShell looks for the file in PATH first for security reasons, like POSIX shells. So even if you're inside %windir%\System32 it still won't run that exe file and you need to use .\certutil instead.

  • Your PATHEXT environment variable is broken. It's the extensions that the shell will look for when you type a command without extension and contains COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC;.CPL by default. If there's no .exe in it then your file couldn't be found. You need to run certutil.exe explicitly

Either way, your system might be broken in some way and you need to run sfc /scannow to fix the system files and environment