如何找出我的控制台应用程序正在使用C#运行的目录?

时间:2020-03-06 14:23:40  来源:igfitidea点击:

如何找出我的控制台应用程序正在使用C#运行的目录?

解决方案

在Windows(不确定Unix等)上,它是命令行中的第一个参数。

在argv *中的C / C ++中firts项目

WinAPI的GetModuleFileName(NULL,char *,MAX_PATH)

要获取.exe文件所在的目录:

AppDomain.CurrentDomain.BaseDirectory

要获取当前目录:

Environment.CurrentDirectory

在.NET中,我们可以使用System.Environment.CurrentDirectory获取启动过程的目录。
System.Reflection.Assembly.GetExecutingAssembly()。Location会告诉我们当前正在执行的程序集的位置(只有当当前正在执行的程序集是从不同于进程开始的程序集的位置加载时才有意思)。

根据授予应用程序的权限(无论影象复制是否有效以及其他调用和部署选项),不同的方法可能起作用或者产生不同的结果,因此我们必须明智地选择武器。话说回来,
对于在本地计算机上本地执行的完全受信任的控制台应用程序,以下所有内容都将产生相同的结果:

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

我们将需要查阅上述成员的文档,以查看所需的确切权限。

Application.StartUpPath;

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