Skip to content

Windows device driver installation and management tool.

License

Notifications You must be signed in to change notification settings

nefarius/nefcon

Repository files navigation

nefcon

MSBuild GitHub All Releases Discord GitHub followers Mastodon Follow

Windows device driver installation and management tool.

About

This little self-contained, no-dependency tool can be built either as a console application or a Windows application which has no visible window (ideal to use in combination with setup makers). It offers a command-line-based driver (un-)installer and allows for simple manipulation of class filter entries. Run nefconc.exe --help to see all the options offered.

Motivation

Windows Device Driver management is and always has been hard. The APIs involved are old, moody and come with pitfalls. Historically the devcon tool or nowadays pnputil have been used to offload these tedious tasks, but unintuitive and sparsely documented command line arguments and error propagation make them poor candidates for automation in e.g. setup engines. Grown tired of these limitations I made this "devcon clone" available under a permissive license which offers the following highlighted features and more:

  • Allows for true window-less execution
  • Actively suppresses and works around user interaction inconsistencies ("reboot required" dialogs and OS-included bugs)
  • Offers optional logging to stdout or file
  • Sane command line arguments 😁
  • Class filter values manipulation
  • Supports installation of primitive drivers

Installation

Binaries are available to download in the releases page, just download and extract. However, if you are using a package manager, you can use one of the following options:

Scoop

This is a community-maintained source and might lag behind GitHub releases.

nefcon is available in the Extras bucket:

scoop bucket add extras
scoop install nefcon

Winget

This is a community-maintained source and might lag behind GitHub releases.

nefcon is available in the winget-pkgs repository:

winget install nefcon

Examples

For a console example use nefconc, for windowless execution use nefconw binary.

Installing a Primitive Driver

nefconw --install-driver --inf-path "Path\To\Inf.inf"

Uninstalling a Primitive Driver

nefconw --uninstall-driver --inf-path "Path\To\Inf.inf"

Modifying HIDClass upper filters

nefconw --add-class-filter --position upper --service-name HidHide --class-guid 745a17a0-74d3-11d0-b6fe-00a0c90f57da

Create virtual Root-enumerated device node

nefconw --create-device-node --hardware-id root\HidHide --class-name System --class-guid 4D36E97D-E325-11CE-BFC1-08002BE10318

Remove device(s) and driver

nefconw --remove-device-node --hardware-id root\HidHide --class-guid 4D36E97D-E325-11CE-BFC1-08002BE10318

Install file system volume controller driver

nefconw --inf-default-install --inf-path "F:\Downloads\btrfs-1.8\btrfs.inf"

devcon "emulation"

Currently the devcon install INFfile HardwareID command is implemented so you can use nefcon as a drop-in replacement for this popular software node device driver installation command! The /r flag to auto-reboot is not supported; check the exit code to determine if a reboot is required and inform the user to do so whenever convenient.

3rd party credits

This project uses the following 3rd party resources: