Is there any way that I can install my driver WITHOUT the user being logged in.
Details:
My driver is signed with a valid Extended Validation Certificate. (it has gone through MS driver signing as well)
I have an AdvancedInstaller install project with a custom action that installs that driver.
When the user is logged IN, the driver installs and runs perfectly, it doesn't matter if I run the install silently or through the install UI.
However, when the user is logged OUT, and the install program is run silently through a "remote install program" (such as PDQ Runner)... the device driver fails to install.
Code:
Here is the Advanced installer custom action that installs the device driver:
File to Launch : RUNDLL32.EXE
Command Line : SETUPAPI.DLL,InstallHinfSection DefaultInstall 132 [#MyDriver.inf]
NOTES:
I have contacted PDQ Runner, and they were very helpful and tested my install program with their latest version (going above and beyond call of duty there!) and responded with:
we've narrowed down what we think your customers have been encountering.
It boils down to Deploy attempting to be as unobtrusive as possible and
initiating a non-interactive session for deployments. In nearly all cases,
this is perfectly fine. But when the installer attempts to finish off and
install the driver, it's trying to do so in an interactive fashion.
It fails (very un-specifically in the install log, rather annoyingly
- but I digress) to do so, but the install reports a success overall.
The big catch is that the user running the install must be logged onto the
machine during the deployment.
Here is my .inf contents:
[Version]
DriverVer = 05/02/2018,10.14.19.8
Signature="$WINDOWS NT$"
Class=System
ClassGuid={4D36E97D-E325-11CE-BFC1-08002BE10318}
Provider="PDetect40
CatalogFile=PDetect40.cat
[SourceDisksNames]
1="PDetect"
[SourceDisksFiles]
PDetect40.sys=1
[DestinationDirs]
DefaultDestDir=12
;
; Installation
;
[DefaultInstall]
CopyFiles=PDetect.Files
[DefaultInstall.Services]
AddService=PDetect,,PDetect.Service
[DefaultInstall.ntamd64]
CopyFiles=PDetect.Files64
[DefaultInstall.ntamd64.Services]
AddService=PDetect40,,PDetect.Service64
;
; Uninstallation
;
[DefaultUninstall]
DelFiles=PDetect.Files
[DefaultUninstall.Services]
DelService=PDetect,0x200
[DefaultUninstall.ntamd64]
DelFiles=PDetect.Files64
[DefaultUninstall.ntamd64.Services]
DelService=PDetect,0x200
;
; Driver details
;
[PDetect.Files64]
PDetect40.sys,,,2
[PDetect.Service64]
DisplayName = "PDetect40"
ServiceType = 1
StartType = 1
ErrorControl = 1
ServiceBinary = %12%\PDetect40.sys
The answer is "no" you cannot. Again, I had to hire a "device driver programmer to get an answer"