首页
社区
课程
招聘
[原创]VS2017社区版开发WIN10驱动,取消强行测试签名。关键字:error MSB4018: “SignTask”解决办法
2019-1-28 00:26 8468

[原创]VS2017社区版开发WIN10驱动,取消强行测试签名。关键字:error MSB4018: “SignTask”解决办法

2019-1-28 00:26
8468
看雪怎么回事,分享知识不加雪币还扣雪币,搞不懂。

error MSB4018: “SignTask”解决办法。网上搜不到办法的,足以证明我是原创。

在安装wdk包的时候会俏俏生成一个一天过期不更新的测试证书并安装在个人证书里面。
通过cmd -> certmgr.msc可以看到。

在配置->Driver Signing SignMode  SignMode改为Off,全部关掉都是没效果的。猜测是社区版的原因。社区版只用于开源和学生用。
我尝试换一个签名证书还是会签测试名。所以我会认为是社区版的原因。
网上找不到解决办法,只有自己想办法。

首先我通过certmgr.msc把测试证书删掉,编译出错。
error MSB4018: “SignTask”任务意外失败。
双击进入错误。
<SignTask  Condition="'@(DriverSign->Count())'  &gt; 0"
        SignMode                               ="$(SignMode)"
        BuildingInIDE                          ="$(BuildingInsideVisualStudio)"
        ProjectFileName                        ="$(MSBuildProjectName) "
        Sources                                ="@(DriverSign)"
        DriverType                             ="$(DriverType)"
        GenerateCertificate                    ="$(GenerateTestCertificate)"
        CertificateStoreName                   ="$(CertificateStoreName)"
        SubjectName                            ="$(SubjectName)"
        TrackerLogDirectory                    ="$(DriverTestSignTrackerLogDirectory)"
        TestCertificate                        ="$(TestCertificate)"
        Password                               ="$(Password)"
        OSList                                 ="$(Inf2CatWindowsVersionList)"
        Inf2CatToolPath                        ="$(Inf2CatToolPath)"
        UseDebugLibraries                      ="$(UseDebugLibraries)"
        UserRootDirectory                      ="$(UserRootDir)"
        Platform                               ="$(Platform)"
        SignedOutputDirectory                  ="$(OutDir)"
        TargetOS                               ="$(TargetVersion)"
        CertificateToExport                    ="$(CertificateOutputPath)"
        FileDigestAlgorithm                    ="%(DriverSign.FileDigestAlgorithm)"
        AdditionalOptions                      ="%(DriverSign.AdditionalOptions)"
        DiagnosticMode                         ="$(DiagnosticMode)"
        TLogReadFiles                          ="@(DriverSignTLogReadFiles)"
        TLogWriteFiles                         ="@(DriverSignTLogWriteFiles)"
        ToolExe                                ="$(DriverSignToolExe)"
        ToolPath                               ="$(DriverSignToolPath)"
        TrackFileAccess                        ="$(TrackFileAccess)"
        MinimalRebuildFromTracking             ="$(DriverTestSignMinimalRebuildFromTracking)"
        ToolArchitecture                       ="$(DriverSignToolArchitecture)"
        TrackerFrameworkPath                   ="$(DriverSignTrackerFrameworkPath)"
        TrackerSdkPath                         ="$(DriverSignTrackerSdkPath)">
</SignTask>

文件头注释了一段话让我意识到这个文件的重要性。
<!--
***********************************************************************************************
WindowsDriver.Common.targets
WARNING:  DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
          created a backup copy.  Incorrect changes to this file will make it
          impossible to load or build your projects from the command-line or the IDE.
This file defines the steps/targets required to build driver projects.
Copyright (C) Microsoft Corporation. All rights reserved.
***********************************************************************************************
机翻就是
警告:除非您了解msbuild,并且已创建备份副本。对该文件的错误更改将使其无法从命令行或IDE加载或构建项目。此文件定义了构建驱动程序项目所需的步骤/目标。
版权所有(c)Microsoft Corporation。版权所有。
-->
一行一行看,看到228行,发现一个东西。不同版本行数可能不一样。
  <!-- *******************************************************************************************
        Set signing-related properties
       ******************************************************************************************* -->
  <PropertyGroup>
    <SignMode Condition="'$(SignMode)' == '' and '$(EnableTestSign)' == 'true'">TestSign</SignMode>
  </PropertyGroup>
意思大概就是说没填 和 启动测试签名 都会 SignMode Condition = TestSign
SignMode我在项目里设置为OFF是没效果的,说明关键点是EnableTestSign。
EnableTestSign没找到,那就一直是'true'。所以SignMode一直就是TestSign。

TestSign改为Off
<SignMode Condition="'$(SignMode)' == '' and '$(EnableTestSign)' == 'true'">Off</SignMode>

直接保存,编译通过。再也没有测试签名的感觉真好。

野牛看见猎狗会跑,狮王会追着猎狗咬。

【原创】转载请注明链接。打这几个字的感觉真好。


[培训]二进制漏洞攻防(第3期);满10人开班;模糊测试与工具使用二次开发;网络协议漏洞挖掘;Linux内核漏洞挖掘与利用;AOSP漏洞挖掘与利用;代码审计。

收藏
点赞10
打赏
分享
最新回复 (7)
雪    币: 17842
活跃值: (59828)
能力值: (RANK:125 )
在线值:
发帖
回帖
粉丝
Editor 2019-1-28 09:11
2
0
感谢分享! 已点赞
雪    币: 6977
活跃值: (1775)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
TopC 2019-1-28 09:26
3
0
测试签名可以在ide里直接关掉
雪    币: 5855
活跃值: (438)
能力值: ( LV4,RANK:45 )
在线值:
发帖
回帖
粉丝
NightGuard 1 2019-1-28 11:42
4
0

error MSB4018: “SignTask”解决办法。网上搜不到办法的,足以证明我是原创。

用google还是能搜索到的。。

雪    币: 6081
活跃值: (1182)
能力值: (RANK:30 )
在线值:
发帖
回帖
粉丝
CCkicker 2019-1-28 15:18
5
0
发主题帖扣15币,主要是为了鼓励大家发原创、优质文章。每一个回帖都会给主题帖作者+1雪币,另外还有点赞功能,点赞一次+15雪币。相信大家不会吝啬对作者的鼓励 
雪    币: 10
活跃值: (216)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
lucanewayne 2019-1-29 08:55
6
0
有没有人试过,vs2015也适用吗
雪    币: 2938
活跃值: (18)
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
fqbqrr 2019-1-29 10:44
7
0
谢谢分享,嗯,好东西.我也不喜欢签名.就是装逼的东西.
雪    币: 403
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
DWwinter 2019-1-29 11:26
8
0
15雪币已扣
游客
登录 | 注册 方可回帖
返回