使用 Visual Studio 对exe文件进行数字签名

使用“VS2013 开发人员命令提示”运行签名工具。转到要签名的文件目录运行命令:

signtool sign /a 要签名的程序.exe

signtool 的相关命令

```csharp
Usage: signtool [options]

    Valid commands:
            sign       --  Sign files using an embedded signature.
            timestamp  --  Timestamp previously-signed files.
            verify     --  Verify embedded or catalog signatures.
            catdb      --  Modify a catalog database.
            remove     --  Reduce the size of an embedded signed file.

For help on a specific command, enter "signtool /?"
```

把签名程序存放到一个bat文件中,为了省事,我直接把“VS2013 开发人员命令提示”中的文件合并到一块了,全文如下。

```csharp

@call :GetVSCommonToolsDir
@if "%VS120COMNTOOLS%"=="" goto errornoVS120COMNTOOLSDIR

@call "%VS120COMNTOOLS%VCVarsQueryRegistry.bat" 32bit No64bit

@if "%VSINSTALLDIR%"=="" goto errornoVSINSTALLDIR
@if "%FrameworkDir32%"=="" goto errornoFrameworkDIR32
@if "%FrameworkVersion32%"=="" goto errornoFrameworkVer32
@if "%Framework40Version%"=="" goto errornoFramework40Version

@set FrameworkDir=%FrameworkDir32%
@set FrameworkVersion=%FrameworkVersion32%

@if not "%WindowsSDKExecutablePathx86%" == "" (
@set "PATH=%WindowsSDKExecutablePathx86%;%PATH%"
)

@if not "%WindowsSdkDir%" == "" (
@set "PATH=%WindowsSdkDir%bin\x86;%PATH%"
@set "INCLUDE=%WindowsSdkDir%include\shared;%WindowsSdkDir%include\um;%WindowsSdkDir%include\winrt;%INCLUDE%"
@set "LIB=%WindowsSdkDir%lib\winv6.3\um\x86;%LIB%"
@set "LIBPATH=%WindowsSdkDir%References\CommonConfiguration\Neutral;%ExtensionSDKDir%\Microsoft.VCLibs\12.0\References\CommonConfiguration\neutral;%LIBPATH%"
)

@rem
@rem Root of Visual Studio IDE installed files.
@rem
@set DevEnvDir=%VSINSTALLDIR%Common7\IDE\

@rem PATH
@rem ----
@if exist "%VSINSTALLDIR%Team Tools\Performance Tools" (
@set "PATH=%VSINSTALLDIR%Team Tools\Performance Tools;%PATH%"
)
@if exist "%ProgramFiles%\HTML Help Workshop" set PATH=%ProgramFiles%\HTML Help Workshop;%PATH%
@if exist "%ProgramFiles(x86)%\HTML Help Workshop" set PATH=%ProgramFiles(x86)%\HTML Help Workshop;%PATH%
@if exist "%VCINSTALLDIR%VCPackages" set PATH=%VCINSTALLDIR%VCPackages;%PATH%

@if exist "%FrameworkDir%%Framework40Version%" set PATH=%FrameworkDir%%Framework40Version%;%PATH%
@if exist "%FrameworkDir%%FrameworkVersion%" set PATH=%FrameworkDir%%FrameworkVersion%;%PATH%
@if exist "%VSINSTALLDIR%Common7\Tools" set PATH=%VSINSTALLDIR%Common7\Tools;%PATH%
@if exist "%VCINSTALLDIR%BIN" set PATH=%VCINSTALLDIR%BIN;%PATH%
@set PATH=%DevEnvDir%;%PATH%

@rem Add path to MSBuild Binaries
@if exist "%ProgramFiles%\MSBuild\12.0\bin" set PATH=%ProgramFiles%\MSBuild\12.0\bin;%PATH%
@if exist "%ProgramFiles(x86)%\MSBuild\12.0\bin" set PATH=%ProgramFiles(x86)%\MSBuild\12.0\bin;%PATH%

@rem Add path to TypeScript Compiler
@if exist "%ProgramFiles%\Microsoft SDKs\TypeScript\1.0" set PATH=%ProgramFiles%\Microsoft SDKs\TypeScript\1.0;%PATH%
@if exist "%ProgramFiles(x86)%\Microsoft SDKs\TypeScript\1.0" set PATH=%ProgramFiles(x86)%\Microsoft SDKs\TypeScript\1.0;%PATH%

@if exist "%VSINSTALLDIR%VSTSDB\Deploy" (
@set "PATH=%VSINSTALLDIR%VSTSDB\Deploy;%PATH%"
)

@if not "%FSHARPINSTALLDIR%" == "" (
@set "PATH=%FSHARPINSTALLDIR%;%PATH%"
)

@if exist "%DevEnvDir%CommonExtensions\Microsoft\TestWindow" (
@set "PATH=%DevEnvDir%CommonExtensions\Microsoft\TestWindow;%PATH%"
)

@rem INCLUDE
@rem -------
@if exist "%VCINSTALLDIR%ATLMFC\INCLUDE" set INCLUDE=%VCINSTALLDIR%ATLMFC\INCLUDE;%INCLUDE%
@if exist "%VCINSTALLDIR%INCLUDE" set INCLUDE=%VCINSTALLDIR%INCLUDE;%INCLUDE%

@rem LIB
@rem ---
@if exist "%VCINSTALLDIR%ATLMFC\LIB" set LIB=%VCINSTALLDIR%ATLMFC\LIB;%LIB%
@if exist "%VCINSTALLDIR%LIB" set LIB=%VCINSTALLDIR%LIB;%LIB%

@rem LIBPATH
@rem -------
@if exist "%VCINSTALLDIR%ATLMFC\LIB" set LIBPATH=%VCINSTALLDIR%ATLMFC\LIB;%LIBPATH%
@if exist "%VCINSTALLDIR%LIB" set LIBPATH=%VCINSTALLDIR%LIB;%LIBPATH%
@if exist "%FrameworkDir%%Framework40Version%" set LIBPATH=%FrameworkDir%%Framework40Version%;%LIBPATH%
@if exist "%FrameworkDir%%FrameworkVersion%" set LIBPATH=%FrameworkDir%%FrameworkVersion%;%LIBPATH%

@rem VisualStudioVersion
@rem -------------------
@set VisualStudioVersion=12.0

@goto end

@REM -----------------------------------------------------------------------
:GetVSCommonToolsDir
@set VS120COMNTOOLS=
@call :GetVSCommonToolsDirHelper32 HKLM > nul 2>&1
@if errorlevel 1 call :GetVSCommonToolsDirHelper32 HKCU > nul 2>&1
@if errorlevel 1 call :GetVSCommonToolsDirHelper64 HKLM > nul 2>&1
@if errorlevel 1 call :GetVSCommonToolsDirHelper64 HKCU > nul 2>&1
@exit /B 0

:GetVSCommonToolsDirHelper32
@for /F "tokens=1,2*" %%i in (‘reg query "%1\SOFTWARE\Microsoft\VisualStudio\SxS\VS7" /v "12.0"‘) DO (
@if "%%i"=="12.0" (
@SET "VS120COMNTOOLS=%%k"
)
)
@if "%VS120COMNTOOLS%"=="" exit /B 1
@SET "VS120COMNTOOLS=%VS120COMNTOOLS%Common7\Tools\"
@exit /B 0

:GetVSCommonToolsDirHelper64
@for /F "tokens=1,2*" %%i in (‘reg query "%1\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\SxS\VS7" /v "12.0"‘) DO (
@if "%%i"=="12.0" (
@SET "VS120COMNTOOLS=%%k"
)
)
@if "%VS120COMNTOOLS%"=="" exit /B 1
@SET "VS120COMNTOOLS=%VS120COMNTOOLS%Common7\Tools\"
@exit /B 0

@REM -----------------------------------------------------------------------
:errornoVS120COMNTOOLSDIR
@echo ERROR: Cannot determine the location of the VS Common Tools folder.
@goto end

:errornoVSINSTALLDIR
@echo ERROR: Cannot determine the location of the VS installation.
@goto end

:errornoFrameworkDIR32
@echo ERROR: Cannot determine the location of the .NET Framework 32bit installation.
@goto end

:errornoFrameworkVer32
@echo ERROR: Cannot determine the version of the .NET Framework 32bit installation.
@goto end

:errornoFramework40Version
@echo ERROR: Cannot determine the .NET Framework 4.0 version.
@goto end

:end

@echo off

cd %~dp0

signtool sign /a 要签名的程序.exe
```

使用 Visual Studio 对exe文件进行数字签名

时间: 2024-08-07 09:43:52

使用 Visual Studio 对exe文件进行数字签名的相关文章

Microsoft Visual Studio 2008 在文件中查找 失效的解决方法

1: 暂时的解决办法是,在'在文件中查找'按钮边上的下拉框中输入要查询的东西,然后回车 2: 选择窗口的重置窗口布局.(该方法解决了我的问题,原因分析大概是 弹出的窗口被别的挡住了) 3: 修复Microsoft Visual Studio 2008

Visual Studio中xml文件使用app.config、web.config等的智能提示的方法

在.Net开发的过程中,有时我们需要使用Xml文件作为配置文件(基于某些情况的考虑),而不是app.config.web.config这种,但是我们在xml中配置时希望可以增加类似编辑app.confg.web.config文件时的智能提示. 没有作特殊配置时,编写xml文件如下: 从上图可以看到,没有智能提示.但是我们编辑app.config.web.config时有智能提示,比如上面的configuration,我们可能只要输入前面几个字母就会弹出智能提示,然后可以直接从下来中选择.如下图:

Visual Studio 2015 自定义文件编译

自己编译好了 QT 5.6.0 Alpha 版本后,如何使用 VS2015 创建 QT 工程呢? 1.安装插件,安装失败!因为 VS2015 不再支持 ADDIN , 所以 QT-VS-ADDIN 只能支持到 VS2013 2.使用 QtCreator , 这个不习惯使用,而且速度慢 3.自己动手 第一个想法是在编译工程之前,遍历工程文件找出需要的文件,使用 uic.moc 编译出对应的文件,然后就可以正常编译了 但是该如何做呢?碰巧想起 CUDA 的安装教程里面就有关于 VS2010 的自定义

Visual Studio中把文件夹导入工程中

VS用到的功能还是太少,记录备忘. 有的时候需要把其他库的源码导入当前工程直接使用,而这个库是源码形式,又带很多目录的. 之前从没遇到过这种情况,自己的库目录自己新建,添加. 第三方库一般有单独的Project可以导入Solution. 今天找CSharp MIDI解析库,遇到一个源码带目录的,发现还不会导入. 方法如下: 首先直接把源码目录复制到工程目录下,但是在IDE中不显示. 点击这里显示全部文件. 所有文件和文件夹就显示出来了 把目录包含进工程 原文地址:https://www.cnbl

cmake导出的visual studio工程带头文件

file(GLOB_RECURSE CURRENT_HEADERS *.h *.hpp) 分组显示 source_group("Include" FILES ${CURRENT_HEADERS})

微软Visual Studio "14" CTP 2 发布

对于在微软阵营下进行工作的团队来说,拥有最新版本的Visual Studio是提高效率最佳的选择,没有之一. 在本文中,我们就上个月发布的Visual Studio "14" CTP1和昨天发布的Visual Studio "14" CTP2进行详细发布说明梳理,供大家餐食: (一) Visual Studio "14" CTP 2版本: 微软于2014年7月8日发布了Visual Studio 14 (新Visual Studio版本的代号)的

手动安装Silverlight 4 Tools for Visual Studio 2010

手动安装吧,将Silverlight 4 Tools for Visual Studio 2010.exe改成rar文件,解压缩,按照下面的步骤安装: 1.silverlight_developer.exe 2.Silverlight_UninstallKB976272.exe 3.silverlight_sdk.msi 4.VS10-KB982218-v4.exe 5.SilverlightTools_Package.msi 6.Silverlight_UninstallRIAPreview.

微软 Visual Studio 14 CTP2 发布

对于在微软阵营下进行工作的团队来说,拥有最新版本的 Visual Studio 是提高效率最佳的选择,没有之一. 在本文中,我们就上个月发布的 Visual Studio "14" CTP1 和昨天发布的 Visual Studio "14" CTP2 进行详细发布说明梳理,供大家参考. 1.   Visual Studio "14" CTP 2 版本 微软于 2014 年 7 月 8 日发布了 Visual Studio 14 (新 Visua

有感 Visual Studio 2015 RTM 简介 - 八年后回归 Dot Net,终于迎来了 Mvc 时代,盼走了 Web 窗体时代

有感 Visual Studio 2015 RTM 简介 - 八年后回归 Dot Net,终于迎来了 Mvc 时代,盼走了 Web 窗体时代 太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作. 关于