2012-01-10 5 views
2

В настоящее время мы работаем над драйвером устройства Windows, основанным на базе Jungo WinDriver (не очень важной). У нас есть сертификат VeriSign и никаких проблем с процессом подписания или функциональностью драйвера.Откуда появляется информация о диалоговом окне Windows Security во время установки драйвера?

Однако во время тестирования установки (в Windows 7) мы наблюдаем нечетное поведение в диалоговом окне безопасности Windows, которое запрашивает подтверждение установки во время установки драйвера.

В этом диалоге 3 полей, кажется, будет отображаться (ASCII'fied цитирую):

+----------------------------------------------------------------------+ 
| 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-ю часть еще более загадочным ...

[Update 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 драйвера вообще.

+0

Что делает ваш файл INF выглядит? – Luke

+1

Не происходит ли это из сертификата, который вы подписали для своего кода? –

+0

Я проверил сертификат, и насколько я могу сказать, строка в '' не соответствует строковой или строковой комбинации. По крайней мере, не в прямом направлении.
Информация о SUBJECT сертификата содержит ее части, но это будет: первая половина тега CN, за которой следуют первые 2/3rds тега OU. Что кажется странным образом обрабатывать вещи для меня:

Пример: CN = RandomA Company, OU = RandomB Sub Division
'' = "RandomA RandomB Sub"
Tobias

ответ

0

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

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

2

Вместе с каким-либо другим источником (спасибо всем людям в ntdev на osronline.com [esp. 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> Кажется, равным значению в разделе «Provider» в вас INF-файл

<SOMETHING B> Кажется, есть несколько случаев:

  • В тех случаях, когда класс устройства уже существует, это значение равно значению «ClassDesc» в соответствующем разделе реестра. (Найдено по: HKLM\SYSTEM\ControlSet001\Control\Class\<The GUID of your device class>)
  • Однако для системных внутренних классов устройства значение не отображается, хотя «ClassDesc» не пуст. Также может быть, что значение не разрешено правильно или просто игнорируется «по выбору» в этих случаях.
  • Ничего не будет отображаться, если эта конкретная установка будет впервые введена в этот класс устройства.

<COMPANY> Похоже, что это простое значение CN из сертификата, используемого для подписи водителя.

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