C# 不在进程树中打开另一个进程

完整代码在最后,不想看过程的可以直接跳转使用

踩坑记录:

C#要在程序中打开另外一个exe,很多人就会用到Process

Process process = new();
process.StartInfo.FileName = "你的exe文件路径";
process.Start();

一顿操作,成功启动了,但是有个坑点:

如果没有指定它的 WorkingDirectory,那么他就会默认以启动他的程序的根目录作为WorkingDirectory

这样的话就会加入启动他的程序的的进程树中,这样会导致杀原来进程的进程树会把这个exe同时干掉,或者exe中某些依赖相对路径的机制失效,所以如果exe不大,你可以将它放在启动他的程序的根目录下某个位置:

process.StartInfo.WorkingDirectory = Path.Combine(Directory.GetCurrentDirectory(), "你放exe的地方");

这样启动的程序就不会加入原来进程的进程树,而且也可以很好的解决exe里面的相对路径问题。

完整代码:

Process process = new();
process.StartInfo.FileName = "你的exe文件路径";
process.StartInfo.WorkingDirectory = Path.Combine(Directory.GetCurrentDirectory(), "你放exe的地方");
process.Start();

*Directory.GetCurrentDirectory()为获得当前运行程序的根目录*

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值