工作目录

目录

返回目录

1. 修改当前进程的工作目录

使用System.IO.Directory.GetCurrentDirectory和SetCurrentDirectory方法可以得到或者设置当前进程的工作目录(又称当前目录,初始目录)。

Environment类的CurrentDirectory属性(可读可写)内部调用Directory的GetCurrentDirectory和SetCurrentDirectory方法,因此它们是等价的。

staticvoid Main(string[] args)

{

    test();

    //更改工作目录

    Directory.SetCurrentDirectory(@"D:\archives");

    test();

}

//输出目录

staticvoid test()

{

    //当前工作目录

    Console.WriteLine(Directory.GetCurrentDirectory());

    //从工作目录的根目录的相对路径

    Console.WriteLine(Path.GetFullPath(@"\a\b"));

    //从工作目录的相对路径

    Console.WriteLine(Path.GetFullPath(@"a\b"));

    Console.WriteLine();

}

输出:

e:\users\mgen\documents\visual studio 2010\Projects\TTC\TTC\bin\Release

e:\a\b

e:\users\mgen\documents\visual studio 2010\Projects\TTC\TTC\bin\Release\a\b

D:\archives

D:\a\b

D:\archives\a\b

可以看出来,更改工作目录后,相对路径的值会跟随当前的工作目录而改变。

返回目录

2. 修改其它进程的工作目录

System.Diagnostics.ProcessStartInfo类的WorkingDirectory属性可以为一个准备启动的进程指定一个工作目录(注意ProcessStartInfo的UseShellExecute必须为false,UseShellExecute为true时WorkingDirectory用来指定文件的包含目录),用一个简单的命令行DIR指令就可以做个测试:

Process.Start("cmd", "/k dir");

很简单,并没有修改默认进程的工作目录,那么会在命令行中显示当前执行文件目录的子文件夹列表。

接下来修改工作目录:

var psi =newProcessStartInfo("cmd", "/k dir");

//不使用ShellExecute,用CreateProcess

psi.UseShellExecute =false;

psi.WorkingDirectory =@"D:\archives";

Process.Start(psi);

这个DIR会显示D盘的Archives目录下的子目录信息。

返回目录

3. 怎样知道真正的执行文件路径?

既然可以修改其他程序的工作目录。那么你的程序工作目录也有可能被修改,那么Directory.GetCurrentDirectory方法的结果是不确定的。那么怎样知道自己程序真正所在的目录呢?

有多种方法:

Windows Forms程序都熟知的:

//Applicatuib类在System.Windows.Forms命名空间内

Path.GetDirectoryName(Application.ExecutablePath);

还有:

Path.GetDirectoryName(Process.GetCurrentProcess().MainModule.FileName);

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值