Устанавливать/удалять драйвер .inf программно с помощью С#.net

Я делаю приложение, используя С#.net. Он также содержит драйвер мини-фильтра файловой системы. Я хочу установить и удалить этот драйвер программно с помощью С#.net. Обычно я могу установить это с помощью .INF файла (щелкнув правой кнопкой мыши + нажать "Установить" ). Но я хочу установить это программно. Существует функция SDK InstallHinfSection() для установки драйвера .inf. Я ищу эквивалент .net для этой функции.

Привет

Navaneeth

Ответы

Ответ 1

Попробуйте что-то вроде этого:

using System.Runtime.InteropServices;

[DllImport("Setupapi.dll", EntryPoint="InstallHinfSection", CallingConvention=CallingConvention.StdCall)]
public static extern void InstallHinfSection(
    [In] IntPtr hwnd,
    [In] IntPtr ModuleHandle,
    [In, MarshalAs(UnmanagedType.LPWStr)] string CmdLineBuffer,
    int nCmdShow);

Затем назовем это:

InstallHinfSection(IntPtr.Zero, IntPtr.Zero, "my path", 0);

Я сгенерировал большую часть этой сигнатуры, используя P/Invoke Generation Generator.

Полные сведения об этом методе и его параметрах находятся на MSDN. Согласно MSDN, первый параметр может быть нулевым, второй должен быть нулевым, а последний параметр должен быть 0. Вам нужно только передать строковый параметр.

Ответ 2

Этот простой код работал у меня

    private void driverInstall()
    {

        var process = new Process();
        process.StartInfo.UseShellExecute = false;
        process.StartInfo.CreateNoWindow = true;
        process.StartInfo.RedirectStandardOutput = true;
        process.StartInfo.RedirectStandardError = true;
        process.StartInfo.FileName = "cmd.exe";

        process.StartInfo.Arguments = "/c C:\\Windows\\System32\\InfDefaultInstall.exe " + driverPath; // where driverPath is path of .inf file
        process.Start();
        process.WaitForExit();
        process.Dispose();
        MessageBox.Show(@"Driver has been installed");
    }