Откуда берется информация в диалоговом окне «Безопасность Windows» во время установки драйвера?

В настоящее время мы работаем над драйвером устройства Windows, основанным на фреймворке Jungo WinDriver (на самом деле это не самая важная часть). У нас есть сертификат 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-ю часть еще более загадочной...

[Обновление 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 драйвера.


person Tobias    schedule 10.01.2012    source источник
comment
Как выглядит ваш INF-файл?   -  person Luke    schedule 11.01.2012
comment
Разве это не происходит из сертификата, который вы использовали для подписи своего кода?   -  person David Heffernan    schedule 11.01.2012
comment
Я проверил сертификат и, насколько я могу судить, строка в <SOMETHING B> не соответствует строке или комбинации строк в нем. По крайней мере, не прямым способом. ‹br/› Информация SUBJECT сертификата состоит из ее частей, но это будет: 1-я половина тега CN, за которой следуют первые 2/3 тега OU. Мне это кажется странным:‹br/›‹br/› Пример: CN = RandomA Company, OU = RandomB Sub Division‹br/› <SOMETHING B> = RandomA RandomB Sub‹br/›   -  person Tobias    schedule 11.01.2012


Ответы (2)


Имя в приглашении берется из директивы DriverPackageDisplayName файла INF, а издатель — из проверенной подписи в CAT-файле.

Источник: http://www.davidegrayson.com/signing/

person Yarik    schedule 25.08.2015

Вместе с каким-то другим источником (спасибо всем людям из ntdev на osronline.com [особенно Максим]) и некоторыми копаниями в реестре мы считаем, что наконец-то смогли определить происхождение содержимого диалога. Ниже приведены вещи, которые мы нашли:

Снова используя пример диалога:

+----------------------------------------------------------------------+
| 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 из сертификата, используемого для подписи драйвера.

Возможно, это еще немного, поэтому, пожалуйста, не стесняйтесь добавлять дополнительную информацию. Но, надеюсь, это, по крайней мере, поможет указать правильное направление тому, кто ищет ту же информацию.

person Tobias    schedule 12.01.2012