Process.StartInfo 属性

定义

获取或设置要传递给 Start()Process 方法的属性。

public:
 property System::Diagnostics::ProcessStartInfo ^ StartInfo { System::Diagnostics::ProcessStartInfo ^ get(); void set(System::Diagnostics::ProcessStartInfo ^ value); };
public System.Diagnostics.ProcessStartInfo StartInfo { get; set; }
[System.ComponentModel.Browsable(false)]
public System.Diagnostics.ProcessStartInfo StartInfo { get; set; }
member this.StartInfo : System.Diagnostics.ProcessStartInfo with get, set
[<System.ComponentModel.Browsable(false)>]
member this.StartInfo : System.Diagnostics.ProcessStartInfo with get, set
Public Property StartInfo As ProcessStartInfo

属性值

表示启动进程时要使用的数据的 ProcessStartInfo。 这些自变量包括用于启动该进程的可执行文件或文档的名称。

属性

例外

指定 StartInfo 的值为 null

仅限 .NET Core 和 .NET 5+: Start() 方法未用于启动进程。

示例

以下示例使用要执行的文件、对该文件执行的操作以及它是否应显示用户界面来填充 StartInfo 。 有关其他示例,请参阅 类属性的 ProcessStartInfo 参考页。

#using <System.dll>
using namespace System;
using namespace System::Diagnostics;
using namespace System::ComponentModel;

int main()
{
    Process^ myProcess = gcnew Process;

    try
    {
        myProcess->StartInfo->UseShellExecute = false;
        // You can start any process, HelloWorld is a do-nothing example.
        myProcess->StartInfo->FileName = "C:\\HelloWorld.exe";
        myProcess->StartInfo->CreateNoWindow = true;
        myProcess->Start();
        // This code assumes the process you are starting will terminate itself. 
        // Given that it is started without a window so you cannot terminate it 
        // on the desktop, it must terminate itself or you can do it programmatically
        // from this application using the Kill method.
    }
    catch ( Exception^ e ) 
    {
        Console::WriteLine( e->Message );
    }
}
using System;
using System.Diagnostics;
using System.ComponentModel;

namespace MyProcessSample
{
    class MyProcess
    {
        public static void Main()
        {
            try
            {
                using (Process myProcess = new Process())
                {
                    myProcess.StartInfo.UseShellExecute = false;
                    // You can start any process, HelloWorld is a do-nothing example.
                    myProcess.StartInfo.FileName = "C:\\HelloWorld.exe";
                    myProcess.StartInfo.CreateNoWindow = true;
                    myProcess.Start();
                    // This code assumes the process you are starting will terminate itself.
                    // Given that it is started without a window so you cannot terminate it
                    // on the desktop, it must terminate itself or you can do it programmatically
                    // from this application using the Kill method.
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
        }
    }
}
Imports System.Diagnostics
Imports System.ComponentModel

Namespace MyProcessSample
    Class MyProcess
        Public Shared Sub Main()
            Try
                Using myProcess As New Process()

                    myProcess.StartInfo.UseShellExecute = False
                    ' You can start any process, HelloWorld is a do-nothing example.
                    myProcess.StartInfo.FileName = "C:\\HelloWorld.exe"
                    myProcess.StartInfo.CreateNoWindow = True
                    myProcess.Start()
                    ' This code assumes the process you are starting will terminate itself. 
                    ' Given that it is started without a window so you cannot terminate it 
                    ' on the desktop, it must terminate itself or you can do it programmatically
                    ' from this application using the Kill method.
                End Using
            Catch e As Exception
                Console.WriteLine((e.Message))
            End Try
        End Sub
    End Class
End Namespace

注解

StartInfo 表示用于启动进程的参数集。 调用 时 StartStartInfo 使用 指定要启动的进程。 唯一需要 StartInfo 设置的成员是 FileName 属性。 通过指定 FileName 属性启动进程类似于在 Windows“开始”菜单的“运行”对话框中键入信息。 因此, FileName 属性不需要表示可执行文件。 它可以是扩展已关联到系统上安装的应用程序的任何文件类型。 例如,FileName如果已将文本文件与编辑器(如记事本)关联,则可以具有 .txt 扩展名;如果已将 .doc 文件与文字处理工具(如 Microsoft Word)关联,则它可以具有 .doc。 同样,与 “运行 ”对话框可以接受包含或不带 .exe 扩展名的可执行文件名称一样,.exe 扩展名在 成员中 FileName 是可选的。 例如,可以将 属性设置为 FileName “Notepad.exe”或“记事本”。

可以通过将 属性设置为 FileName 位置来启动 ClickOnce 应用程序 (例如,最初安装应用程序的 Web 地址) 。 不要通过指定 ClickOnce 应用程序在硬盘驱动器上的安装位置来启动该应用程序。

如果文件名涉及不可执行的文件(例如 .doc 文件),则可以包含一个动词,指定要对文件执行的操作。 例如,可以将 以 .doc 扩展名结尾的文件设置为 Verb “Print”。 如果手动为 属性输入值VerbFileName则属性中指定的文件名不需要具有扩展名。 但是,如果使用 Verbs 属性来确定哪些谓词可用,则必须包含 扩展。

可以将 属性中指定的 StartInfo 参数更改为对进程调用 Start 方法的时间。 启动进程后,更改 StartInfo 值不会影响或重启关联的进程。 如果调用 Start(ProcessStartInfo) 设置了 和 ProcessStartInfo.Password 属性的方法ProcessStartInfo.UserName,则会调用非托管CreateProcessWithLogonW函数,这将在新窗口中启动进程,即使CreateNoWindow属性值为 trueWindowStyle 属性值为 Hidden

应仅访问 StartInfo 方法返回Start的对象上的 Process 属性。 例如,不应访问 StartInfo 返回GetProcesses的对象Process上的 属性。 否则,在 .NET Core 上, StartInfo 属性将引发 ,InvalidOperationException.NET Framework它将返回一个虚拟ProcessStartInfo对象。

启动进程时,文件名是填充 (只读) MainModule 属性的文件。 如果要在进程启动后检索与进程关联的可执行文件,请使用 MainModule 属性。 如果要设置尚未启动关联进程的实例的 Process 可执行文件,请使用 StartInfo 属性的成员 FileName 。 由于 属性的成员 StartInfo 是传递给 Start 进程的 方法的参数,因此在关联进程启动后更改 FileName 属性不会重置属性 MainModule 。 这些属性仅用于初始化关联的进程。

适用于

另请参阅