Categories: Cシャープ

C#でエクスプローラを開く方法を徹底解説!初心者でも簡単に実装できるサンプル付き

C#で開発をしていると、特定のフォルダをWindowsのエクスプローラで開きたい場面が出てくることがあります。
例えばログファイルの保存先を表示したいときや、ユーザーに操作を促したいフォルダを案内するときなどです。

本記事では、C#でエクスプローラを開く基本的な方法から、ファイルを選択した状態で開く応用テクニック、注意すべきエラー対応まで詳しく解説します。
Visual Studioと.NET環境があればすぐに試せるサンプルコードも用意しているので、ぜひ参考にしてください。


C#でエクスプローラを開く基本の方法

Windowsのエクスプローラを開くには、System.Diagnostics.Process.Startメソッドを使用します。
最もシンプルな例は以下の通りです。

using System.Diagnostics;

class Program
{
static void Main()
{
// フォルダを指定してエクスプローラを起動
Process.Start("explorer.exe", @"C:\Users\Public\Documents");
}
}

このコードは C:\Users\Public\Documents をエクスプローラで開きます。
指定するパスにはフォルダでもファイルでもOKです。実行するとWindowsのエクスプローラがその場所を開きます。


ファイルを選択した状態でエクスプローラを開く方法

特定のファイルをユーザーに強調したいときは、選択された状態で開くと便利です。以下のように /select, オプションを使います。

using System.Diagnostics;

class Program
{
static void Main()
{
// ファイルを選択状態で開く
string filePath = @"C:\Users\Public\Documents\sample.txt";
Process.Start("explorer.exe", $"/select,\"{filePath}\"");
}
}

この形式では、Explorerがそのファイルをハイライトした状態でフォルダを表示してくれます。
パスの空白対策のため、パスは " で囲む必要があります。


Process.Startの注意点と例外処理

近年の.NET(特に.NET Core以降)では、セキュリティの観点から Process.Start() の使用に制限がある場合があります。
また、パスが間違っていると例外が発生します。

try
{
string folderPath = @"C:\Invalid\Path";
Process.Start("explorer.exe", folderPath);
}
catch (System.ComponentModel.Win32Exception ex)
{
Console.WriteLine("エクスプローラの起動に失敗しました: " + ex.Message);
}

このように、Win32Exception で例外を捕捉しておくと、万が一の時もアプリが落ちるのを防げます。
ユーザーに対してエラーメッセージを表示するなどの対処も可能です。


.NET Core / .NET 5以降でのProcess.Startの注意点

.NET Coreや.NET 5以降では、UseShellExecute プロパティを明示的に指定する必要があります。
この設定がないと、エクスプローラが正常に起動しない場合があります。

using System.Diagnostics;

class Program
{
static void Main()
{
var psi = new ProcessStartInfo
{
FileName = "explorer.exe",
Arguments = @"C:\Users\Public\Documents",
UseShellExecute = true
};
Process.Start(psi);
}
}

このように、ProcessStartInfo を使うことで、より柔軟な設定が可能になります。
特にクロスプラットフォームではない処理を書くときには、こういった明示的な書き方が推奨されます。


エクスプローラでネットワークドライブを開く方法

ローカルのパスだけでなく、ネットワークドライブ(UNCパス)も開くことが可能です。
以下はNAS上の共有フォルダを開く例です。

csharpコピーする編集するProcess.Start("explorer.exe", @"\\192.168.0.10\SharedFolder");

この形式も特に問題なく動作します。
ただし、ネットワーク環境や認証の設定によってはアクセスエラーになることもあるため、事前に確認しておきましょう。


エクスプローラで複数のフォルダを開く方法

Process.Start() を複数回使えば、複数のフォルダを連続して開くこともできます。

Process.Start("explorer.exe", @"C:\Users\Public\Documents");
Process.Start("explorer.exe", @"D:\Work\Projects");

ただし、ユーザーにとってはウィンドウが増えて煩雑になる可能性があるので、実装前に目的を明確にしておきましょう。


ユーザーの操作を促すための工夫

エクスプローラを開くだけでなく、そこに「これを確認してください」などのメッセージを表示したい場合は、
MessageBox.Show() などでメッセージを先に表示してから、エクスプローラを開くのが効果的です。

using System.Windows.Forms;

class Program
{
[STAThread]
static void Main()
{
MessageBox.Show("ログファイルをご確認ください。", "ご案内", MessageBoxButtons.OK, MessageBoxIcon.Information);
Process.Start("explorer.exe", @"C:\Logs");
}
}

これにより、ユーザーはなぜそのフォルダが開いたのかを直感的に理解できるようになります。


まとめ

C#からエクスプローラを開く方法は非常にシンプルで、Process.Start() を使えば簡単に実現できます。
以下のポイントを押さえておくと、より実用的なアプリ開発に役立ちます。

  • フォルダを開くには "explorer.exe" とパスを指定
  • /select, を使えばファイルを選択状態で表示できる
  • .NET Coreでは UseShellExecute = true を忘れずに
  • ネットワークパスや複数フォルダにも対応可能
  • 必要に応じてエラー処理やユーザー通知も組み合わせる

業務アプリや個人ツールなど、さまざまな場面でこのテクニックは役に立つはずです。ぜひ実装に取り入れてみてください。

upandup

Web制作の記事を中心に、暮らし、ビジネスに役立つ情報を発信します。 アフィリエイトにも参加しています。よろしくお願いいたします。