【发布时间】:2018-04-14 21:01:46
【问题描述】:
我正在尝试安装从较旧的嵌入式解决方案(winxp 嵌入式)获得的未签名驱动程序,我目前正在反转该解决方案。我正在像软件一样安装和设置驱动程序,但是,由于驱动程序未签名,我无法安装它,至少以编程方式。
安装代码:
std::cout << "Installing driver from " << this->driverPath << std::endl;
SC_HANDLE scManager = OpenSCManagerA(0, 0, 0xF003F);
if (!scManager) {
std::cout << "Failed to open SCManager" << std::endl;
return;
}
SC_HANDLE hService = CreateServiceA(scManager, this->serviceName, this->serviceName, 0xF01FF, 1, 3, 1, this->driverPath, 0, 0, 0, 0, 0);
if (!hService) {
hService = OpenServiceA(scManager, this->serviceName, 0xF01FF);
if (!hService) {
std::cout << "error: " << std::to_string(GetLastError()) << std::endl;
CloseServiceHandle(scManager);
return;
}
else {
std::cout << "OK!" << std::endl;
}
}
if (!StartServiceA(hService, 0, 0)) {
std::cout << "StartService failed: " << std::to_string(GetLastError()) << std::endl;
return;
}
基于此的命令行输出如下:
Installing driver from C:\driver.sys
OK!
StartService failed: 1275
错误代码是ERROR_DRIVER_BLOCKED。我试图通过进入高级启动和禁用签名强制来强制 Windows 允许我安装它,但唯一的影响是 Windows 不再给我一个单独的操作系统窗口告诉我它阻止了驱动程序安装。
我已经尝试了这里描述的三种方法,但没有任何运气:https://www.maketecheasier.com/install-unsigned-drivers-windows10/
(不过,我假设这些是为手动安装驱动程序的用户制作的)。
如何让 Windows 允许我以编程方式安装此未签名的驱动程序?
【问题讨论】:
-
你已经安装好驱动了。让未签名的驱动程序运行 -
bcdedit /set testsigning on并重新启动 -
我仍然遇到同样的错误。据我所知,驱动程序上没有“测试签名”,我认为它是一个没有任何签名的普通windowxp驱动程序。这是文件详细信息的截图:s1.petterroea.com/serve?hash=1649fd93423bea0e9297
-
起初你混淆了安装和加载驱动程序。你安装好了。对于加载未签名的驱动程序基本上足够
bcdedit /set testsigning on并重新启动 -
运行您建议的命令并重新启动后,我仍然在 StartService 上收到 1275
-
但是您的系统是 64 位还是 32 位? 32位驱动只能在32位windows下运行