Domanda

Quando si installa un driver firmato (vale a dire con un CAB debitamente firmato) su Windows 7 tramite DPInst, a meno che non si tratta di un driver WHQL-firmato, non è possibile installarlo in silenzio. Se si esegue DPInst in modalità non in silenzio, sarà chiede di fidarsi del "editore". Se si esegue DPInst in modalità silenziosa, fallirebbe con un codice di errore di firma-correlato (si parla di 0x800B0109 - controllare il Setupapi.app.log).

È stato utile?

Soluzione 2

Il modo più semplice per farlo è quello di aggiungere il certificato di firma per i TrustedPublishers. Si può fare programatically (l'attuazione delle Win32Exception viene lasciato come esercizio per il lettore):

#include <windows.h>
#include <wincrypt.h>
#include "win32exception.h"

void InstallTrustedPublisherCertificate(LPCTSTR CertificateFilePath)
{
    DWORD dwContentType;
    PCCERT_CONTEXT pCertContext = NULL;
    if (!CryptQueryObject(
            CERT_QUERY_OBJECT_FILE,
            CertificateFilePath,
            CERT_QUERY_CONTENT_FLAG_ALL,
            CERT_QUERY_FORMAT_FLAG_ALL,
            0,
            NULL,
            &dwContentType,
            NULL,
            NULL,
            NULL,
            (const void **)&pCertContext))
            throw win32exception("CryptQueryObject");

    if (dwContentType != CERT_QUERY_CONTENT_CERT)
        throw exception("Incorrect content type of crypto object.");

    __try
    {
        HCERTSTORE hCertStore = CertOpenStore(
            CERT_STORE_PROV_SYSTEM,
            0,
            0,
            CERT_STORE_OPEN_EXISTING_FLAG |
            CERT_SYSTEM_STORE_CURRENT_USER,
            _T("TrustedPublisher"));
        if (hCertStore == NULL)
            throw win32exception("CertOpenStore");

        __try
        {
            if (CertAddCertificateContextToStore(hCertStore, pCertContext, CERT_STORE_ADD_NEWER, NULL))
            {
                // Added certificate to TrustedPublisher store.
            }
            else
            {
                DWORD err = GetLastError();
                if (err == CRYPT_E_EXISTS)
                {
                    // Certificate already exists in TrustedPublisher store.
                }
                else
                    throw win32exception("CertAddCertificateContextToStore", err);
            }
        }
        __finally
        {
            CertCloseStore (hCertStore, 0);
        }
    }
    __finally
    {
        CertFreeCertificateContext(pCertContext);
    }
}

Altri suggerimenti

Mentre la risposta di Ilya è buona, la soluzione su Windows 7 è ancora più facile. Il comando di seguito implementa il certificato sia per l'utente corrente e il sistema di fiducia negozi certificato autori. Si richiede privilegi amministrativi ed è fornito da Microsoft.

Per Windows 7

certutil.exe -addstore TrustedPublisher cert.cer

I verificato che questo funziona su Windows 7 64-bit Per distribuire firmato, ma non certificati WHQL, i conducenti -. Senza chiedere conferma all'utente

Windows XP

WHQL Certificazione

Sembra che su XP è comunque necessario avere i driver certificati WHQL al fine di richieste Evita su installa.

Pre-Installazione di SPC su Windows XP

Per Windows XP è necessario scaricare Windows Server 2003 Admin Tools Pack da Microsoft e l'estratto Certutil.exe e Certadm.dll. Quindi il comando precedente lavoro sarà su XP pure.

Admin Tools Pack: http://www.microsoft. com / download / it / Details.aspx? DisplayLang = it & id = 16770

Si noti che il file msi estratto può essere controllato da 7-zip, quindi non è necessario installarlo per ottenere l'EXE e DLL è necessario.

E la domanda è? Se il driver non è WHQL-certified, esso non può essere installato in silenzio. Questa è una misura di protezione di Windows.

I conducenti devono passare attraverso la certificazione WHQL per evitare qualsiasi tipo di non-firmato pop-up.

Se siete alla ricerca di terze parti provider di servizi WHQLTesting farci sapere, saremo lieti di aiutarvi in ??questa materia.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top