C#で指定フォルダを開く・指定ファイルの選択方法を解説

- システム
エンジニア - C#で指定フォルダやファイルを開くことができると聞きました。方法を教えてください。
- プロジェクト
マネージャー - 様々な方法で開くことができます。実際のソースコードを見ていきましょう。
C#でフォルダを開く方法について
今回は、C#でフォルダを開く方法について説明します。C#では、指定のフォルダを開いたり、指定ファイルを選択した状態で開いたりできます。
C#でフォルダを開く方法に興味のある方はぜひご覧ください。
エクスプローラで開く
C#では、exeを関連付けてフォルダを開くことができ、通常はエクスプローラが関連付けられていますので、エクスプローラでフォルダが開きます。
実際のソースコードを見てみましょう。
事前に”C:\exist”フォルダを作成しておいてください。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
using System;
using System.Diagnostics;
namespace WindowsFormsApp1
{
static class Program
{
[STAThread]
static void Main()
{
try
{
Process.Start(@"C:\exist"); // 指定したフォルダを開く
Process.Start(@"C:\does_not_exist"); // System.ComponentModel.Win32Exception
}
catch (Exception e)
{
Console.WriteLine(e.GetType());
}
}
}
}
|
実行すると、指定したフォルダがエクスプローラで開かれます。
存在しないフォルダを指定すると、System.ComponentModel.Win32Exceptionが発生します。
このように、C#ではexeを関連付けてフォルダを開くことができます。
explorer.exe を指定してエクスプローラで開く
C#では、explorer.exe を指定してフォルダを開くことができます。
実際のソースコードを見てみましょう。
事前に”C:\exist”フォルダを作成しておいてください。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
using System;
using System.Diagnostics;
namespace WindowsFormsApp1
{
static class Program
{
[STAThread]
static void Main()
{
try
{
Process.Start("explorer.exe", @"C:\exist"); // 指定したフォルダを開く
Process.Start("explorer.exe", @"C:\does_not_exist"); // エクスプローラが開く(例外は発生しない)
}
catch (Exception e)
{
Console.WriteLine(e.GetType());
}
}
}
}
|
実行すると、指定したフォルダがエクスプローラで開かれます。
存在しないフォルダを指定すると、例外は発生せずにエクスプローラは開きます。
このように、C#ではexplorer.exe を指定してフォルダを開くことができます。
指定のフォルダ(ファイル)が選択された状態で開く
C#では、指定したフォルダやファイルを選択した状態で開くことができます。
explorer.exeに「/selectオプション」を指定します。
実際のソースコードを見てみましょう。
事前に”C:\exist\exist.txt”ファイルを作成しておいてください。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
using System;
using System.Diagnostics;
namespace WindowsFormsApp1
{
static class Program
{
[STAThread]
static void Main()
{
try
{
Process.Start("explorer.exe", @"/select,""C:\exist"); // 指定したフォルダを選択した状態でエクスプローラを開く
//Process.Start("explorer.exe", @"/select,""C:\exist\exist.txt"); // 指定したファイルを選択した状態でエクスプローラを開く
//Process.Start("explorer.exe", @"/select,""C:\does_not_exist"); // エクスプローラを開く
//Process.Start("explorer.exe", @"/select,""C:\exist\does_not_exist.txt"); // エクスプローラを開く
//Process.Start("explorer.exe", @"/select,""C:\does_not_exist\does_not_exist.txt"); // エクスプローラを開く
}
catch (Exception e)
{
Console.WriteLine(e.GetType());
}
}
}
}
|
実行すると、指定したフォルダやファイルを選択した状態で開き、フォルダやファイルが存在しない場合でもエクスプローラは開きます。
分かりやすさのために、1行ずつ有効にして確認してみてください。
このように、C#では指定したフォルダやファイルを選択した状態で開くことができます。
ルートフォルダを指定して開く
C#では、ルートフォルダを指定してフォルダを開くことができます。
explorer.exeに「/rootオプション」を指定します。
実際のソースコードを見てみましょう。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
using System;
using System.Diagnostics;
namespace WindowsFormsApp1
{
static class Program
{
[STAThread]
static void Main()
{
try
{
Process.Start("explorer.exe", @"/e,/root,""C:\exist"); // 指定したフォルダをルートフォルダにして開く
}
catch (Exception e)
{
Console.WriteLine(e.GetType());
}
}
}
}
|
実行すると、指定したフォルダをルートフォルダにして開くことが分かります。
特殊フォルダを開く
C#では、「マイドキュメント」や「マイコンピュータ」などの特殊フォルダを開く際、パスの代わりにCLSIDを使用することでも開けます。
実際のソースコードを見てみましょう。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
using System;
using System.Diagnostics;
namespace WindowsFormsApp1
{
static class Program
{
[STAThread]
static void Main()
{
try
{
Process.Start("explorer.exe", @"/e,::{450D8FBA-AD25-11D0-98A8-0800361B1103}"); // マイドキュメントを開く
}
catch (Exception e)
{
Console.WriteLine(e.GetType());
}
}
}
}
|
CLSIDはこの他にも多数あります。
例えば、
お気に入り→{323CA680-C24D-4099-B94D-446DD2D7249E}
PC→{20D04FE0-3AEA-1069-A2D8-08002B30309D}
PC\ダウンロード→{20D04FE0-3AEA-1069-A2D8-08002B30309D}\::{374DE290-123F-4565-9164-39C4925E467B}
PC\デスクトップ→{20D04FE0-3AEA-1069-A2D8-08002B30309D}\::{B4BFCC3A-DB2C-424C-B029-7FE99A87C641}
などです。他にもありますので、興味がある方は検索してみてください。
このように、C#では「マイドキュメント」や「マイコンピュータ」などの特殊フォルダを開く際、パスの代わりにCLSIDを使用することでも開けます。
- システム
エンジニア - 特殊ファイルを開く方法もあるのですね。参考になりました。
- プロジェクト
マネージャー - パスの代わりにCLSIDを用いたり、様々な方法があります。是非ソースコードを書いて理解を深めてください。
C#でフォルダを開く方法についてしろう
いかがでしたでしょうか。C#でフォルダを開く方法について説明しました。
C#は、指定のフォルダを開いたり、指定ファイルを選択した状態で開いたりできます。ぜひご自身でC#のソースコードを書いて、理解を深めてみましょう。
FEnet.NETナビ・.NETコラムは株式会社オープンアップシステムが運営しています。
株式会社オープンアップシステムはこんな会社です
秋葉原オフィスには株式会社オープンアップシステムをはじめグループのIT企業が集結!
数多くのエンジニアが集まります。

-
スマホアプリから業務系システムまで
スマホアプリから業務系システムまで開発案件多数。システムエンジニア・プログラマーとしての多彩なキャリアパスがあります。
-
充実した研修制度
毎年、IT技術のトレンドや社員の要望に合わせて、カリキュラムを刷新し展開しています。社内講師の丁寧なサポートを受けながら、自分のペースで学ぶことができます。
-
資格取得を応援
スキルアップしたい社員を応援するために資格取得一時金制度を設けています。受験料(実費)と合わせて資格レベルに合わせた最大10万円の一時金も支給しています。
-
東証プライム上場企業グループ
オープンアップシステムは東証プライム上場「株式会社オープンアップグループ」のグループ企業です。
安定した経営基盤とグループ間のスムーズな連携でコロナ禍でも安定した雇用を実現させています。
株式会社オープンアップシステムに興味を持った方へ
株式会社オープンアップシステムでは、開発系エンジニア・プログラマを募集しています。
年収をアップしたい!スキルアップしたい!大手の上流案件にチャレンジしたい!
まずは話だけでも聞いてみたい場合もOK。お気軽にご登録ください。


C#新着案件New Job
-
システム開発/東京都新宿区/【WEB面談可/C#経験者/20代前半の方活躍中/経験1年以上の方活躍中】/在宅勤務
月給29万~34万円東京都新宿区(新宿駅) -
システム開発/東京都新宿区/【WEB面談可/C#経験者/20代後半~40代の方活躍中/経験年数不問】/在宅勤務
月給41万~50万円東京都新宿区(新宿駅) -
デバック、テスト項目の作成/神奈川県横浜市/【WEB面談可/C#経験者/20代前半の方活躍中/経験1年以上の方活躍中】/在宅勤務
月給29万~34万円神奈川県横浜市(桜木町駅) -
デバック、テスト項目の作成/神奈川県横浜市/【WEB面談可/C#経験者/20代後半~40代の方活躍中/経験年数不問】/在宅勤務
月給41万~50万円神奈川県横浜市(桜木町駅) -
基幹システム開発導入/東京都新宿区/【WEB面談可/C#経験者/20代前半の方活躍中/経験1年以上の方活躍中】/在宅勤務
月給29万~34万円東京都新宿区(西新宿駅) -
基幹システム開発導入/東京都新宿区/【WEB面談可/C#経験者/20代後半~40代の方活躍中/経験年数不問】/在宅勤務
月給41万~50万円東京都新宿区(西新宿駅)