SignTool.exe Not Found: Find the Windows SDK Path First
If a build says SignTool.exe is not found, first prove whether the executable exists in an installed Windows SDK and which SDK version/architecture owns it. This guide stops at executable/SDK discovery. If the exact full path launches successfully but the bare signtool command is not recognized, continue with the separate command-resolution guide instead of reinstalling the SDK.
Use PowerShell to search the standard Windows SDK bin directory for SignTool copies. The command below intentionally shows only the first few matches for quick discovery; if several SDKs are installed, do not treat that truncated output as an authoritative SDK selection.
Get-ChildItem "${env:ProgramFiles(x86)}\Windows Kits\10\bin" -Filter signtool.exe -Recurse -ErrorAction SilentlyContinue | Select-Object -First 5 -ExpandProperty FullNameVerify: If one or more paths are returned, choose the version/architecture appropriate to the build and run that exact full path with /?. If help opens, SignTool itself is present and runnable. Do not reinstall the SDK for a later bare-command/PATH failure.
x86, x64, and arm64 SignTool paths; use the copy appropriate for the environment running the signing step.Why this happens
Microsoft ships SignTool as part of the Windows SDK, typically inside a versioned `Windows Kits\10\bin\
Diagnose before changing more
If yes, launch the intended copy by full path. That distinguishes executable discovery from PATH/command resolution.
Developer Command Prompt or Developer PowerShell may provide the expected build-tool environment.
If the search returns nothing, verify the Windows SDK/Visual Studio workload rather than copying SignTool from another machine.
Fix #2 — prove the intended SDK copy launches by full path
Before changing PATH, launch the selected SignTool copy directly. Match the SDK version requested by the project/build when one is explicitly pinned; then select a tool architecture appropriate for the process/build environment. This test proves the executable itself independently of shell command resolution.
& 'C:\Program Files (x86)\Windows Kits\10\bin\\x64\signtool.exe' /? Verify: Run the exact discovered SignTool path with /?. If help opens, this article's executable-discovery problem is solved. If only bare signtool still fails, move to ‘signtool’ Is Not Recognized; do not reinstall SignTool.
Fix #3 — install the Windows SDK component if SignTool is absent
If no SDK copy exists, install a Windows SDK that matches the version required by your project/build. If you use Visual Studio, open Visual Studio Installer → Modify and make sure a Windows SDK component for the required target version is installed; alternatively, use Microsoft’s official standalone Windows SDK installer. You do not need to download SignTool separately—it is installed under the SDK bin path.
# After installation, locate the SDK copy again:
Get-ChildItem "${env:ProgramFiles(x86)}\Windows Kits\10\bin" -Filter signtool.exe -Recurse -ErrorAction SilentlyContinueVerify: After SDK installation/repair, rerun the location check and launch the intended returned signtool.exe by full path. Bare-command resolution is a separate verification step covered by the related guide.
What not to do
signtool by name is not recognized after the full executable path already works.Do not choose an SDK copy solely because it appeared first in a truncated recursive search; honor an explicitly pinned project/build SDK version.Still seeing the error?
If the exact discovered signtool.exe path opens help successfully, the executable/SDK discovery problem is solved. A later bare-command failure is command resolution; a build-only failure is build-tool path discovery; a signing failure after SignTool launches belongs to certificate/digest/signing diagnosis. Keep those failure stages separate.
signtool?Your current shell does not resolve the SDK bin directory. Prefer the Developer shell or configure the build with the exact discovered path.
Inspect the MSBuild property, target, or script that supplies the signing-tool path instead of changing certificate settings.
Treat the runner as a separate machine. Confirm that its image contains the Windows SDK/SignTool and that the job can resolve the intended version and architecture.
/? successfullyCommon error wording
Official references
Still stuck? Ask the community
Share your operating system, software version, exact error text, and which fix you already tried. Another reader may have seen the same setup.
Loading community discussion…
Comments could not load here. Open ErrorHarbor Discussions on GitHub →