99

C# でコンソール アプリが実行されているディレクトリを確認するにはどうすればよいですか?

4

8 に答える 8

174

.exe ファイルがあるディレクトリを取得するには:

AppDomain.CurrentDomain.BaseDirectory

現在のディレクトリを取得するには:

Environment.CurrentDirectory
于 2008-09-18T21:45:45.560 に答える
15

アプリケーションに付与された権限、シャドウ コピーが有効かどうか、およびその他の呼び出しと展開のオプションに応じて、さまざまな方法が機能するか、さまざまな結果が得られる可能性があるため、武器を賢く選択する必要があります。そうは言っても、次のすべては、完全に信頼されたコンソール アプリケーションが存在するマシンでローカルに実行される場合、同じ結果をもたらします。

Console.WriteLine( Assembly.GetEntryAssembly().Location );
Console.WriteLine( new Uri(Assembly.GetEntryAssembly().CodeBase).LocalPath );
Console.WriteLine( Environment.GetCommandLineArgs()[0] );
Console.WriteLine( Process.GetCurrentProcess().MainModule.FileName );

必要な正確な権限を確認するには、上記のメンバーのドキュメントを参照する必要があります。

于 2008-09-18T22:06:06.430 に答える
5

Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)

于 2010-03-02T18:34:12.850 に答える
3

.NET ではSystem.Environment.CurrentDirectory、プロセスが開始されたディレクトリを取得するために使用できます。
System.Reflection.Assembly.GetExecutingAssembly().Location現在実行中のアセンブリの場所がわかります (これは、現在実行中のアセンブリが、プロセスが開始されたアセンブリの場所とは異なる場所から読み込まれた場合にのみ興味深いものです)。

于 2008-09-18T21:47:26.803 に答える
1

Application.StartUpPath;

于 2009-02-19T05:22:04.517 に答える
1

Windows(Unixなどについては不明)では、コマンドラインの最初の引数です。

C/C++ では、argv* の最初の項目

WinAPI - GetModuleFileName(NULL, char*, MAX_PATH)

于 2008-09-18T21:45:43.080 に答える