web-dev-qa-db-ja.com

C#でプログラムでWindowsフォルダーを検索する

Explorerを強制終了して再起動するプログラムを書いていますが、別の場所にウィンドウをインストールする人がいるため、場所をハードコーディングしたくありません(たとえば、C:\のd:\ドライブにインストールされている人を見つけました)ドライブは存在しましたが、何もインストールされていませんでした)

Environment.SpecialFolderの下を見てみました。その下に「ウィンドウ」オプションが表示されません

これを行う最良の方法は何ですか?

38
Crash893

http://msdn.Microsoft.com/en-us/library/77zkk0b6.aspx

これらを試してください:

Environment.GetEnvironmentVariable("SystemRoot")

Environment.GetEnvironmentVariable("windir")
66
Omar

Environment.GetFolderPath( Environment.SpecialFolder.Windows )は、Windowsフォルダーへのパスを返します。必要な機能を正確に実行するAPI(.NET 4.0以降)を使用するため、環境変数よりもこのアプローチをお勧めします。

48
Uri

私は以下の使用を強くお勧めします:

Directory.GetParent(Environment.GetFolderPath(Environment.SpecialFolder.System))

管理者権限は不要で、.NETフレームワークのすべてのバージョンをサポートしています。

16
Adam Lindsay

Windowsエクスプローラーを単に終了して再起動するには、システムフォルダーへのパスは必要ありません。これは、PATHユーザーがPATH環境変数に既に含まれているためです(ユーザーが混乱しない限り)。

この短いプログラムは、すべてのExplorer.exeインスタンスを強制終了してから、Explorer.exeを再起動します。

static void Main(string[] args)
{
    foreach (Process process in Process.GetProcessesByName("Explorer"))
    {
        if (!process.HasExited)
        {
            process.Kill();
        }
    }
    Process.Start("Explorer.exe");
}
9
Dirk Vollmar