在安装驱动程序期间,“Windows安全性”对话框中的信息来自何处



我们目前正在开发一个基于Jungo的WinDriver框架的Windows设备驱动程序(并不是真正重要的部分)。我们有VeriSign证书,签名过程或驱动程序功能没有问题。

然而,在安装测试期间(在Windows 7上),我们看到了一些关于Windows安全对话框的奇怪行为,该对话框要求在驱动程序安装期间进行安装确认。

在该对话框中,似乎显示了3个字段(ASCII的报价):

+----------------------------------------------------------------------+
| Windows Security                                                     |
+----------------------------------------------------------------------|
| Would you like to install this device software?                      |
|                                                                      |
| Name: <SOMETHING A> <SOMETHING B>                                    |
| Publisher: <COMPANY>                                                 |
|                                                                      |
+----------------------------------------------------------------------+
| <> Always trust software from "<COMPANY>"  [INSTALL] [DON'T INSTALL] |
+----------------------------------------------------------------------|
| Security info / warning etc.                                         |
+----------------------------------------------------------------------+

现在由于某种原因<SOMETHING A><SOMETHING B>是相同的文本。这让对话看起来有点奇怪。这些信息来自INF文件(至少我现在相信这一点),但到目前为止,我找不到关于它来源的详细信息。

现在,由于某种未知的原因(至少对我来说),它似乎重复了INF文件中"提供者"信息的内容两次。

在这方面有经验的人(INF文件、驱动程序安装等)知道是什么导致了这种行为吗?

或者可能是一个链接,指向更多关于INF文件中的哪些信息在这些对话框中被使用的信息?

感谢您花时间阅读本文以及有关该问题的任何建议
-T

[小更新]似乎只有第一部分(<SOMETHING A>)出自INF。这使得第二部分的起源更加令人费解。。。

[更新2]每个请求的INF副本(<…>是内容编辑)

[Version]
Signature=$CHICAGO$
Provider=%PROVIDERNAME%
CatalogFile.NTamd64=<SOME CAT FILE NAME>.cat
DriverVer=<DATE>,<VERSION>
Class=<OUR COMPANY>
ClassGuid={<OUR CLASS ID>}
;---------------------------------------------------------------;
; Driver Information
;---------------------------------------------------------------;
[Manufacturer]
%PROVIDERNAME%=DeviceList,NTamd64
; x86 platform, Win9x, Windows 2000 and later
[DeviceList]
%DESCRIPTION%=DriverInstall,*<OUR DRIVER HANDLE>
; x64 platform, Windows XP x64 edition and later
[DeviceList.NTamd64]
%DESCRIPTION%=DriverInstall,*<OUR DRIVER HANDLE>
;---------------------------------------------------------------;
;---------------------------------------------------------------;
; Source/Destination Information
;---------------------------------------------------------------;
[DestinationDirs]
DefaultDestDir=10,System32Drivers
[SourceDisksFiles]
<OUR DRIVER NAME>.sys=1
[SourceDisksNames]
;1=%INSTDISK%,,,.
;Delete the above line and uncomment the next line for WHQL
1 = %INSTDISK%,<SOME CAT FILE NAME>.cat,,
;---------------------------------------------------------------;
;---------------------------------------------------------------;
; Installation Section
;---------------------------------------------------------------;
; Installation script for Windows 2000 and later
[DriverInstall.NT]
CopyFiles=DriverCopyFiles
[DriverCopyFiles]
<OUR DRIVER NAME>.sys,,,0x22    ; COPYFLG_NOSKIP | COPYFLG_NO_VERSION_DIALOG
[DriverInstall.NT.hw]
AddReg=DriverHwAddReg
[DriverHwAddReg]
HKR,,SampleInfo,,""
; Register a new class in Windows 2000 and later
[ClassInstall32]  ; Register a new class in Windows 2000 and later
AddReg=UpDateRegistry
[UpDateRegistry]
HKR,,,,<OUR COMPANY>
HKR,,Icon,,-5
; Add device driver service
[DriverInstall.NT.Services]
AddService=<OUR SERVICE NAME>, 0x00000002, DriverService
[DriverService]
ServiceType    = 1                  ; SERVICE_KERNEL_DRIVER
StartType      = 3                  ; SERVICE_DEMAND_START
ErrorControl   = 1                  ; SERVICE_ERROR_NORMAL
ServiceBinary = %10%system32drivers<OUR DRIVER NAME>.sys
;------------------------------------------------------------------------------
;  String Definitions
;------------------------------------------------------------------------------
[Strings]
PROVIDERNAME=<THE NAME THAT SHOWS UP TWICE (BUT NOT REALLY)>
DESCRIPTION=<SOME DESCRIPTION>
INSTDISK="Driver Installation Disk"

<THE NAME THAT SHOWS UP TWICE (BUT NOT REALLY)>显示在<SOMETHING A>中。

然而,如小更新1所指出的,改变该值仅导致所述<SOMETHING A>的改变,而不导致其他部分的改变。

在更改了一些测试内容后,<SOMETHING B>中显示的值似乎"凭空"出现,因为我在驱动程序的INF或RC文件中根本找不到它。

再加上一些其他来源(感谢osronline.com上ntdev的所有人[特别是Maxim])和注册表中的一些挖掘,我们相信我们终于能够解决对话框内容的来源。以下是我们发现的东西:

再次使用对话框示例:

+----------------------------------------------------------------------+
| Windows Security                                                     |
+----------------------------------------------------------------------|
| Would you like to install this device software?                      |
|                                                                      |
| Name: <SOMETHING A> <SOMETHING B>                                    |
| Publisher: <COMPANY>                                                 |
|                                                                      |
+----------------------------------------------------------------------+
| <> Always trust software from "<COMPANY>"  [INSTALL] [DON'T INSTALL] |
+----------------------------------------------------------------------|
| Security info / warning etc.                                         |
+----------------------------------------------------------------------+

字段似乎解决如下:

<SOMETHING A>似乎等于INF文件中"提供者"下的值

<SOMETHING B>似乎有多种情况:

  • 在设备类已经存在的情况下,该值等于相应注册表项中的"ClassDesc"值。(位于:HKLMSYSTEMControlSet001ControlClass<The GUID of your device class>
  • 但是,对于系统内部设备类,尽管"ClassDesc"不为空,但该值似乎不会显示。在这些情况下,也可能是没有正确解析该值,或者只是"自行选择"忽略了该值
  • 如果此特定安装是首次将此设备类引入系统,则不会显示任何内容

<COMPANY>似乎简单地等于用于签署驱动程序的证书中的CN值。

也许还有更多,所以请随时添加更多信息。但希望这至少能帮助寻找相同信息的人找到正确的方向。

提示中的名称来自INF文件的DriverPackageDisplayName指令,发布者来自CAT文件上经过验证的签名。

来源:http://www.davidegrayson.com/signing/

相关内容

  • 没有找到相关文章

最新更新