Frage

Wenn Sie einen signierten Treiber zu installieren (das heißt mit einem ordnungsgemäß unterzeichnet .cab) auf Windows 7 durch DPInst, es sei denn, es ist ein WHQL-signierten Treiber ist, können Sie es still nicht installieren. Wenn Sie DPInst im Nicht-Silent-Modus ausführen, werden Sie aufgefordert, die „Publisher“ zu vertrauen. Wenn Sie DPInst im Silent-Modus laufen, wäre es mit einer Unterzeichnung bezogenen Fehlercode fehlschlagen (so etwas wie 0X800B0109 - überprüfen Sie Ihre setupapi.app.log).

War es hilfreich?

Lösung 2

Der einfachste Weg, es zu tun ist, um das Signaturzertifikat auf die TrustedPublishers hinzuzufügen. Sie können es programmatisch tun (die Umsetzung der Win32Exception wird als Übung dem Leser überlassen):

#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);
    }
}

Andere Tipps

Während Ilyas Antwort gut ist, ist die Lösung auf Windows 7 noch einfacher. Der Befehl unten entfalten sowohl das Zertifikat an den aktuellen Benutzer und das System Verlag Zertifikat speichert vertraut. Es sind Administratorrechte erforderlich und wird von Microsoft zur Verfügung gestellt.

Für Windows 7

certutil.exe -addstore TrustedPublisher cert.cer

ich festgestellt, dass dies funktioniert auf Windows 7 64-Bit unterzeichnet zu implementieren, aber nicht WHQL-zertifiziert Treiber -. Ohne Benutzeraufforderung

Windows XP

WHQL-Zertifizierung

Es scheint, dass auf XP Sie noch die Treiber WHQL-zertifiziert haben müssen, um zu vermeiden Anweisungen auf installieren.

Pre-Installation von SPC auf Windows XP

Für Windows XP werden Sie die Windows Server 2003 Admin Tools Pack von Microsoft und Extrakt certutil.exe und certadm.dll herunterladen. Dann wird der Befehl über die Arbeiten an XP als auch.

Admin Tools Pack: http://www.microsoft. com / download / en / details.aspx? displaylang = en & id = 16770

Beachten Sie, dass die extrahierte msi-Datei kann von 7-zip überprüft werden, so dass Sie es nicht brauchen zu installieren, um die exe zu erhalten und dll Sie brauchen.

Und die Frage ist? Wenn der Treiber nicht WHQL-zertifiziert, kann es nicht automatisch installiert werden. Dies ist eine Sicherheitsmaßnahme von Windows.

Die Treiber haben durch WHQL-Zertifizierung gehen, jede Art von un-signierten Pop-ups zu vermeiden.

Wenn Sie auf der Suche nach einer dritten Partei WHQLTesting Dienstleister lassen Sie uns wissen, wir würden uns freuen, Sie in dieser Hinsicht zu helfen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top