Process.StartInfo Property

Gets or sets the properties to pass to the Start method of the Process.

Namespace: System.Diagnostics
Assembly: System (in system.dll)

public ProcessStartInfo StartInfo { get; set; }
/** @property */
public ProcessStartInfo get_StartInfo ()

/** @property */
public void set_StartInfo (ProcessStartInfo value)

public function get StartInfo () : ProcessStartInfo

public function set StartInfo (value : ProcessStartInfo)

Not applicable.

Property Value

The ProcessStartInfo that represents the data with which to start the process. These arguments include the name of the executable file or document used to start the process.

Exception typeCondition


The value that specifies the StartInfo is a null reference (Nothing in Visual Basic).

StartInfo represents the set of parameters to use to start a process. When Start is called, the StartInfo is used to specify the process to start. The only necessary StartInfo member to set is the FileName property. Starting a process by specifying the FileName property is similar to typing the information in the Run dialog box of the Windows Start menu. Therefore, the FileName property does not need to represent an executable file. It can be of any file type for which the extension has been associated with an application installed on the system. For example the FileName can have a .txt extension if you have associated text files with an editor, such as Notepad, or it can have a .doc if you have associated.doc files with a word processing tool, such as Microsoft Word. Similarly, in the same way that the Run dialog box can accept an executable file name with or without the .exe extension, the .exe extension is optional in the FileName member. For example, you can set the FileName property to either "Notepad.exe" or "Notepad".

You can start a ClickOnce application by setting the FileName property to the location (for example, a Web address) from which you originally installed the application. Do not start a ClickOnce application by specifying its installed location on your hard drive.

If the file name involves a nonexecutable file, such as a .doc file, you can include a verb specifying what action to take on the file. For example, you could set the Verb to "Print" for a file ending in the .doc extension. The file name specified in the FileName property does not need to have an extension if you manually enter a value for the Verb property. However, if you use the Verbs property to determine what verbs are available, you must include the extension.

You can change the parameters specified in the StartInfo property up to the time that you call the Start method on the process. After you start the process, changing the StartInfo values does not affect or restart the associated process. If you call the Start(ProcessStartInfo) method with the ProcessStartInfo.UserName and ProcessStartInfo.Password properties set, the unmanaged CreateProcessWithLogonW function is called, which starts the process in a new window even if the CreateNoWindow property value is true or the WindowStyle property value is Hidden.

If you did not use the Start method to start a process, the StartInfo property does not reflect the parameters used to start the process. For example, if you use GetProcesses to get an array of processes running on the computer, the StartInfo property of each Process does not contain the original file name or arguments used to start the process.

When the process is started, the file name is the file that populates the (read-only) MainModule property. If you want to retrieve the executable file that is associated with the process after the process has started, use the MainModule property. If you want to set the executable file of a Process instance for which an associated process has not been started, use the StartInfo property's FileName member. Because the members of the StartInfo property are arguments that are passed to the Start method of a process, changing the FileName property after the associated process has started will not reset the MainModule property. These properties are used only to initialize the associated process.

The following example populates a StartInfo with the file to execute, the action performed on it and whether it should displays a user interface.

using System;
using System.Diagnostics;
using System.ComponentModel;

namespace MyProcessSample
	/// <summary>
	/// Shell for the sample.
	/// </summary>
	class MyProcess
		// These are the Win32 error code for file not found or access denied.
		const int ERROR_FILE_NOT_FOUND =2;
		const int ERROR_ACCESS_DENIED = 5;

		/// <summary>
		/// Prints a file with a .doc extension.
		/// </summary>
		void PrintDoc()
			Process myProcess = new Process();
				// Get the path that stores user documents.
				string myDocumentsPath = 

				myProcess.StartInfo.FileName = myDocumentsPath + "\\MyFile.doc"; 
				myProcess.StartInfo.Verb = "Print";
				myProcess.StartInfo.CreateNoWindow = true;
			catch (Win32Exception e)
				if(e.NativeErrorCode == ERROR_FILE_NOT_FOUND)
					Console.WriteLine(e.Message + ". Check the path.");

				else if (e.NativeErrorCode == ERROR_ACCESS_DENIED)
					// Note that if your word processor might generate exceptions
					// such as this, which are handled first.
					Console.WriteLine(e.Message + 
						". You do not have permission to print this file.");

		public static void Main()
			MyProcess myProcess = new MyProcess();

  • LinkDemand  for full trust for the immediate caller. This member cannot be used by partially trusted code.

Windows 98, Windows Server 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

The Microsoft .NET Framework 3.0 is supported on Windows Vista, Microsoft Windows XP SP2, and Windows Server 2003 SP1.

.NET Framework

Supported in: 3.0, 2.0, 1.1, 1.0

.NET Compact Framework

Supported in: 2.0

Community Additions