Freigeben über


Process.StartInfo-Eigenschaft

Ruft die Eigenschaften ab, die an die Start-Methode von Process übergeben werden sollen, oder legt diese fest.

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

Syntax

'Declaration
Public Property StartInfo As ProcessStartInfo
'Usage
Dim instance As Process
Dim value As ProcessStartInfo

value = instance.StartInfo

instance.StartInfo = value
public ProcessStartInfo StartInfo { get; set; }
public:
property ProcessStartInfo^ StartInfo {
    ProcessStartInfo^ get ();
    void set (ProcessStartInfo^ value);
}
/** @property */
public ProcessStartInfo get_StartInfo ()

/** @property */
public void set_StartInfo (ProcessStartInfo value)
public function get StartInfo () : ProcessStartInfo

public function set StartInfo (value : ProcessStartInfo)

Eigenschaftenwert

Die ProcessStartInfo, die die Daten darstellt, mit denen der Prozess gestartet werden soll. Diese Argumente beinhalten den Namen der ausführbaren Datei oder des Dokuments, das zum Starten des Prozesses verwendet wurde.

Ausnahmen

Ausnahmetyp Bedingung

ArgumentNullException

Der Wert, der StartInfo angibt, ist NULL (Nothing in Visual Basic).

Hinweise

StartInfo stellt die zum Starten eines Prozesses zu verwendende Gruppe von Parametern dar. Wenn Start aufgerufen wird, wird mit StartInfo der zu startende Prozess angegeben. Der einzige StartInfo-Member, der festgelegt werden muss, ist die FileName-Eigenschaft. Das Starten eines Prozesses durch Angabe der FileName-Eigenschaft ähnelt dem Eingeben der Informationen im Dialogfeld Ausführen des Startmenüs von Windows. Daher muss die FileName-Eigenschaft keine ausführbare Datei darstellen. Es kann sich um eine Datei beliebigen Typs handeln, deren Erweiterung einer auf dem System installierten Anwendung zugeordnet ist. So kann der FileName z. B. die Erweiterung .txt aufweisen, wenn Sie Textdateien einem Editor wie dem Windows-Editor zugeordnet haben, oder die Erweiterung .doc, wenn Sie DOC-Dateien einem Textverarbeitungsprogramm wie Microsoft Word zugeordnet haben. Ebenso wie das Dialogfeld Ausführen den Namen einer ausführbaren Datei mit und ohne die Erweiterung .exe akzeptiert, ist die Erweiterung .exe im FileName-Member optional. So können Sie z. B. die FileName-Eigenschaft auf "Notepad.exe" oder "Notepad" festlegen.

Wenn der Dateiname eine nicht ausführbare Datei wie eine DOC-Datei enthält, können Sie ein Verb angeben, das die für die Datei auszuführende Aktion bestimmt. Sie können z. B. für eine Datei mit der Erweiterung .doc das Verb auf "Print" festlegen. Für den in der FileName-Eigenschaft angegebenen Dateinamen ist keine Erweiterung erforderlich, wenn Sie manuell einen Wert für die Verb-Eigenschaft angeben. Wenn Sie jedoch die Verbs-Eigenschaft verwenden, um die verfügbaren Verben zu ermitteln, müssen Sie die Erweiterung einschließen.

Die in der StartInfo-Eigenschaft angegebenen Parameter können Sie bis zu dem Zeitpunkt ändern, zu dem Sie die Start-Methode für den Prozess aufrufen. Nachdem Sie den Prozess gestartet haben, wirkt sich das Ändern der StartInfo-Werte nicht auf den zugeordneten Prozess aus und startet diesen auch nicht neu. Wenn Sie die Start(ProcessStartInfo)-Methode aufrufen, für die die ProcessStartInfo.UserName-Eigenschaft und die ProcessStartInfo.Password-Eigenschaft festgelegt sind, wird die nicht verwaltete CreateProcessWithLogonW-Funktion aufgerufen, die den Prozess in einem neuen Fenster startet, auch wenn der CreateNoWindow-Eigenschaftenwert true oder der WindowStyle-Eigenschaftenwert Hidden ist.

Wenn Sie zum Starten eines Prozesses nicht die Start-Methode verwendet haben, gibt die StartInfo-Eigenschaft nicht die zum Starten des Prozesses verwendeten Parameter wieder. Wenn Sie beispielsweise GetProcesses zum Abrufen eines Arrays der auf dem Computer ausgeführten Prozesse verwenden, enthält die StartInfo-Eigenschaft des jeweiligen Process nicht den ursprünglichen Dateinamen oder die zum Starten des Prozesses verwendeten Argumente.

Der Dateiname gibt die Datei an, mit der beim Start des Prozesses die (schreibgeschützte) MainModule-Eigenschaft aufgefüllt wird. Wenn Sie die dem Prozess zugeordnete ausführbare Datei abrufen möchten, nachdem der Prozess gestartet wurde, verwenden Sie die MainModule-Eigenschaft. Wenn Sie die ausführbare Datei einer Process-Instanz festlegen möchten, für die kein zugeordneter Prozess gestartet wurde, verwenden Sie den FileName-Member der StartInfo-Eigenschaft. Da die Member der StartInfo-Eigenschaft Argumente sind, die an die Start-Methode eines Prozesses übergeben werden, wird die MainModule-Eigenschaft durch Ändern der FileName-Eigenschaft nach dem Start des zugeordneten Prozesses nicht zurückgesetzt. Diese Eigenschaften werden nur zum Initialisieren des zugeordneten Prozesses verwendet.

Beispiel

Im folgenden Beispiel wird eine StartInfo mit der auszuführenden Datei, der ausgeführten Aktion und einer Angabe darüber ausgefüllt, ob eine Benutzeroberfläche angezeigt werden soll.

Imports System
Imports System.Diagnostics
Imports 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.
      Private ERROR_FILE_NOT_FOUND As Integer = 2
      Private ERROR_ACCESS_DENIED As Integer = 5
      
      
      '/ <summary>
      '/ Prints a file with a .doc extension.
      '/ </summary>
      Sub PrintDoc()
         Dim myProcess As New Process()
         
         Try
            ' Get the path that stores user documents.
            Dim myDocumentsPath As String = Environment.GetFolderPath(Environment.SpecialFolder.Personal)
            
            myProcess.StartInfo.FileName = myDocumentsPath + "\MyFile.doc"
            myProcess.StartInfo.Verb = "Print"
            myProcess.StartInfo.CreateNoWindow = True
            myProcess.Start()
         Catch e As Win32Exception
            If e.NativeErrorCode = ERROR_FILE_NOT_FOUND Then
               Console.WriteLine((e.Message + ". Check the path."))
            
            Else
               If e.NativeErrorCode = ERROR_ACCESS_DENIED Then
                  ' 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."))
               End If
            End If
         End Try
      End Sub 'PrintDoc
      
      
      Public Shared Sub Main()
         Dim myProcess As New MyProcess()
         myProcess.PrintDoc()
      End Sub 'Main
   End Class 'MyProcess
End Namespace 'MyProcessSample
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();
            
            try
            {
                // Get the path that stores user documents.
                string myDocumentsPath = 
                    Environment.GetFolderPath(Environment.SpecialFolder.Personal);

                myProcess.StartInfo.FileName = myDocumentsPath + "\\MyFile.doc"; 
                myProcess.StartInfo.Verb = "Print";
                myProcess.StartInfo.CreateNoWindow = true;
                myProcess.Start();
            }
            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();
            myProcess.PrintDoc();
        }
    }
}
#using <System.dll>

using namespace System;
using namespace System::Diagnostics;
using namespace System::ComponentModel;

// These are the Win32 error code for file not found or access denied.
#define ERROR_FILE_NOT_FOUND 2
#define ERROR_ACCESS_DENIED  5
int main()
{
   Process^ myProcess = gcnew Process;
   try
   {
      
      // Get the path that stores user documents.
      String^ myDocumentsPath = Environment::GetFolderPath( Environment::SpecialFolder::Personal );
      myProcess->StartInfo->FileName = String::Concat( myDocumentsPath, "\\MyFile.doc" );
      myProcess->StartInfo->Verb = "Print";
      myProcess->StartInfo->CreateNoWindow = true;
      myProcess->Start();
   }
   catch ( Win32Exception^ e ) 
   {
      if ( e->NativeErrorCode == ERROR_FILE_NOT_FOUND )
      {
         Console::WriteLine( "{0}. Check the path.", e->Message );
      }
      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( "{0}. You do not have permission to print this file.", e->Message );
      }
   }

}

.NET Framework-Sicherheit

Plattformen

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

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.

Versionsinformationen

.NET Framework

Unterstützt in: 2.0, 1.1, 1.0

.NET Compact Framework

Unterstützt in: 2.0

Siehe auch

Referenz

Process-Klasse
Process-Member
System.Diagnostics-Namespace
Start
FileName