16


7

C#.netを使用してプログラムで.infドライバーをインストール/アンインストールする

c#.netを使用してアプリケーションを作成しています。 ファイルシステムミニフィルタードライバーも含まれています。 c#.netを使用してプログラムでこのドライバーをインストールおよびアンインストールしたい。 通常、私はこれを使用してこれをインストールできます .INF file (by right click + press install).but I want to install this プログラム的に .infドライバーをインストールするためのSDK関数InstallHinfSection()があります。 この機能に相当する.netを探しています。

よろしく

ナバニース

2 Answer


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を使用して、この署名のほとんどを生成しました。

このメソッドとそのパラメーターの詳細は、http://msdn.microsoft.com/en-us/library/aa376957(VS.85).aspx [MSDN]にあります。 MSDNによると、最初のパラメーターはnull、2番目のパラメーターは_must_、最後のパラメーター_must_は0にすることができます。 文字列パラメーターを渡すだけです。


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