2

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

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

在该对话框中似乎显示了 3 个字段(ASCII'fied quote):

+----------------------------------------------------------------------+
| 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,System32\Drivers

[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%\system32\drivers\<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 文件中找到它。

4

2 回答 2

2

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

再次使用对话框示例:

+----------------------------------------------------------------------+
| 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”的值。(在下面找到HKLM\SYSTEM\ControlSet001\Control\Class\<The GUID of your device class>:)
  • 但是,对于系统内部设备类,尽管“ClassDesc”不为空,但该值似乎不显示。在这些情况下,也可能是该值未正确解析或只是“选择”忽略。
  • 如果此特定安装是首次将此设备类引入系统,则不会显示任何内容。

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

也许还有更多内容,因此请随时添加其他信息。但希望这至少有助于将寻找相同信息的人指向正确的方向。

于 2012-01-12T02:28:16.627 回答
0

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

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

于 2015-08-25T17:03:49.577 回答