c#中的Process.Start()和获取当前目录

在C#中,Process.StartSystem.Diagnostics.Process 类的一个方法,用于启动一个新进程来执行一个可执行文件或命令。这个方法非常灵活,可以配置多种启动选项,如工作目录、环境变量、窗口样式等。

以下是 Process.Start 方法的一些常见用法:

启动一个简单的应用程序

using System.Diagnostics;
​
class Program
{
    static void Main()
    {
        // 启动记事本程序
        Process.Start("notepad.exe");
    }
}

启动应用程序并指定参数

// 启动计算器程序并打开科学型模式
Process.Start("calc.exe", "/s");

使用 ProcessStartInfo 配置启动选项

using System.Diagnostics;
​
class Program
{
    static void Main()
    {
        ProcessStartInfo startInfo = new ProcessStartInfo
        {
            FileName = "cmd.exe", // 指定要执行的程序
            Arguments = "/c dir", // 指定命令行参数
            UseShellExecute = false, // 不使用ShellExecute启动进程
            RedirectStandardOutput = true, // 重定向标准输出
            CreateNoWindow = true // 不创建新的控制台窗口
        };
​
        // 启动进程
        using (Process process = new Process { StartInfo = startInfo })
        {
            process.Start();
​
            // 读取输出
            string output = process.StandardOutput.ReadToEnd();
            process.WaitForExit(); // 等待进程结束
​
            Console.WriteLine(output);
        }
    }
}

启动应用程序并等待它关闭

// 启动应用程序并等待它关闭
Process.Start("iexplore.exe", "http://www.example.com");
// 执行其他任务...
// 当需要时,可以调用 WaitForExit() 来等待进程结束

启动应用程序并捕获错误输出

ProcessStartInfo startInfo = new ProcessStartInfo
{
    FileName = "yourapp.exe",
    RedirectStandardError = true // 重定向错误输出
};
​
using (Process process = new Process { StartInfo = startInfo })
{
    process.Start();
​
    // 读取错误输出
    string errors = process.StandardError.ReadToEnd();
    process.WaitForExit();
​
    if (!string.IsNullOrEmpty(errors))
    {
        Console.WriteLine("Errors:");
        Console.WriteLine(errors);
    }
}

启动应用程序并设置工作目录

ProcessStartInfo startInfo = new ProcessStartInfo
{
    FileName = "yourapp.exe",
    WorkingDirectory = @"C:\YourAppDirectory" // 设置工作目录
};
​
Process.Start(startInfo);

启动应用程序并设置环境变量

ProcessStartInfo startInfo = new ProcessStartInfo
{
    FileName = "yourapp.exe"
};
​
startInfo.EnvironmentVariables["MY_VARIABLE"] = "value"; // 设置环境变量
​
Process.Start(startInfo);

Process.Start 方法非常强大,可以通过 ProcessStartInfo 类的属性来配置多种启动选项,以满足不同的需求。使用 using 语句可以确保 Process 对象在使用后正确地释放资源。

获取当前目录

在C#中,获取当前工作目录(即当前执行代码的目录)可以通过多种方式实现。以下是一些常用的方法:

1.使用 Directory.GetCurrentDirectory()

2.使用 Environment.CurrentDirectory

Environment.CurrentDirectory 属性提供了当前工作目录的路径:

3.使用 Process.GetCurrentProcess()

如果你需要获取当前进程的工作目录,可以使用 Process

注意,Process.GetCurrentProcess().MainModule.FileName 将返回当前进程的可执行文件的完整路径,但它并不提供工作目录。如果你需要从这个路径中提取目录部分,可以使用

4.使用 AppDomain.CurrentDomain.BaseDirectory

对于ASP.NET应用程序,AppDomain.CurrentDomain.BaseDirectory 属性提供了应用程序的基目录:

注意事项

  • 当使用 Directory.GetCurrentDirectory()Environment.CurrentDirectory 时,它们返回的是当前线程的工作目录。如果其他线程更改了工作目录,它不会影响当前线程的工作目录。

  • 如果你的应用程序更改了当前工作目录(例如,通过 Directory.SetCurrentDirectory()),那么在更改之后调用 Directory.GetCurrentDirectory() 将返回新的工作目录。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值