使用C#.net以编程方式安装/卸载.inf驱动程序

时间:2010-01-09 05:50:47

标签: c# .net install driver

我正在使用c#.net创建一个应用程序。它还包含一个文件系统minifilter驱动程序。我想使用c#.net以编程方式安装和卸载此驱动程序。通常我可以使用.INF文件安装它(通过右键单击+按安装)。但我想以编程方式安装它。有一个SDK函数InstallHinfSection()用于安装.inf驱动程序。我正在寻找这个功能的.net等价物。

此致

Navaneeth

2 个答案:

答案 0 :(得分:25)

尝试这样的事情:

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 Signature Generator生成了大部分签名。

此方法及其参数的完整详细信息位于MSDN。根据MSDN,第一个参数可以为null,第二个参数必须为空,最后一个参数必须为0.您只需要传入字符串参数。< / p>

答案 1 :(得分:5)

这个简单的代码对我有用

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