C# でコンソール アプリが実行されているディレクトリを確認するにはどうすればよいですか?
8 に答える
.exe ファイルがあるディレクトリを取得するには:
AppDomain.CurrentDomain.BaseDirectory
現在のディレクトリを取得するには:
Environment.CurrentDirectory
アプリケーションに付与された権限、シャドウ コピーが有効かどうか、およびその他の呼び出しと展開のオプションに応じて、さまざまな方法が機能するか、さまざまな結果が得られる可能性があるため、武器を賢く選択する必要があります。そうは言っても、次のすべては、完全に信頼されたコンソール アプリケーションが存在するマシンでローカルに実行される場合、同じ結果をもたらします。
Console.WriteLine( Assembly.GetEntryAssembly().Location );
Console.WriteLine( new Uri(Assembly.GetEntryAssembly().CodeBase).LocalPath );
Console.WriteLine( Environment.GetCommandLineArgs()[0] );
Console.WriteLine( Process.GetCurrentProcess().MainModule.FileName );
必要な正確な権限を確認するには、上記のメンバーのドキュメントを参照する必要があります。
Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)
.NET ではSystem.Environment.CurrentDirectory
、プロセスが開始されたディレクトリを取得するために使用できます。
System.Reflection.Assembly.GetExecutingAssembly().Location
現在実行中のアセンブリの場所がわかります (これは、現在実行中のアセンブリが、プロセスが開始されたアセンブリの場所とは異なる場所から読み込まれた場合にのみ興味深いものです)。
Application.StartUpPath;
Windows(Unixなどについては不明)では、コマンドラインの最初の引数です。
C/C++ では、argv* の最初の項目
WinAPI - GetModuleFileName(NULL, char*, MAX_PATH)