Udostępnij za pośrednictwem


Process.Start Metoda

Definicja

Uruchamia zasób procesu i kojarzy go ze składnikiem Process .

Przeciążenia

Start(String, String, String, SecureString, String)

Uruchamia zasób procesu, określając nazwę aplikacji, zestaw argumentów wiersza polecenia, nazwę użytkownika, hasło i domenę oraz kojarzy zasób z nowym Process składnikiem.

Start(String, String, SecureString, String)

Uruchamia zasób procesu, określając nazwę aplikacji, nazwę użytkownika, hasło i domenę oraz kojarzy zasób z nowym Process składnikiem.

Start(String, String)

Uruchamia zasób procesu, określając nazwę aplikacji i zestaw argumentów wiersza polecenia oraz kojarzy zasób z nowym Process składnikiem.

Start(String)

Uruchamia zasób procesu, określając nazwę dokumentu lub pliku aplikacji i kojarzy zasób z nowym Process składnikiem.

Start(ProcessStartInfo)

Uruchamia zasób procesu określony przez parametr zawierający informacje o uruchamianiu procesu (na przykład nazwę pliku procesu do uruchomienia) i kojarzy zasób z nowym Process składnikiem.

Start()

Uruchamia (lub ponownie używa) zasobu procesu określonego przez StartInfo właściwość tego Process składnika i kojarzy go ze składnikiem.

Start(String, IEnumerable<String>)

Uruchamia zasób procesu, określając nazwę aplikacji i zestaw argumentów wiersza polecenia.

Start(String, String, String, SecureString, String)

Źródło:
Process.Unix.cs
Źródło:
Process.Unix.cs
Źródło:
Process.Unix.cs

Ważne

Ten interfejs API nie jest zgodny ze specyfikacją CLS.

Uruchamia zasób procesu, określając nazwę aplikacji, zestaw argumentów wiersza polecenia, nazwę użytkownika, hasło i domenę oraz kojarzy zasób z nowym Process składnikiem.

public:
 static System::Diagnostics::Process ^ Start(System::String ^ fileName, System::String ^ arguments, System::String ^ userName, System::Security::SecureString ^ password, System::String ^ domain);
[System.CLSCompliant(false)]
[System.Runtime.Versioning.SupportedOSPlatform("windows")]
public static System.Diagnostics.Process? Start (string fileName, string arguments, string userName, System.Security.SecureString password, string domain);
[System.CLSCompliant(false)]
public static System.Diagnostics.Process Start (string fileName, string arguments, string userName, System.Security.SecureString password, string domain);
public static System.Diagnostics.Process Start (string fileName, string arguments, string userName, System.Security.SecureString password, string domain);
[<System.CLSCompliant(false)>]
[<System.Runtime.Versioning.SupportedOSPlatform("windows")>]
static member Start : string * string * string * System.Security.SecureString * string -> System.Diagnostics.Process
[<System.CLSCompliant(false)>]
static member Start : string * string * string * System.Security.SecureString * string -> System.Diagnostics.Process
static member Start : string * string * string * System.Security.SecureString * string -> System.Diagnostics.Process
Public Shared Function Start (fileName As String, arguments As String, userName As String, password As SecureString, domain As String) As Process

Parametry

fileName
String

Nazwa pliku aplikacji do uruchomienia w procesie.

arguments
String

Argumenty wiersza polecenia do przekazania podczas uruchamiania procesu.

userName
String

Nazwa użytkownika do użycia podczas uruchamiania procesu.

password
SecureString

Element SecureString zawierający hasło do użycia podczas uruchamiania procesu.

domain
String

Domena do użycia podczas uruchamiania procesu.

Zwraca

Nowy Process , który jest skojarzony z zasobem procesu lub null jeśli nie zostanie uruchomiony żaden zasób procesu. Należy pamiętać, że nowy proces, który został uruchomiony obok już uruchomionych wystąpień tego samego procesu, będzie niezależny od innych. Ponadto polecenie Start może zwrócić proces inny niż null z właściwością HasExited już ustawioną na true. W takim przypadku rozpoczęty proces mógł aktywować istniejące wystąpienie samego siebie, a następnie zakończyć pracę.

Atrybuty

Wyjątki

Nie określono nazwy pliku.

Wystąpił błąd podczas otwierania skojarzonego pliku.

-lub-

Nie można odnaleźć pliku określonego w pliku fileName .

-lub-

Suma długości argumentów i długości pełnej ścieżki do skojarzonego pliku przekracza 2080. Komunikat o błędzie skojarzony z tym wyjątkiem może być jednym z następujących: "Obszar danych przekazany do wywołania systemowego jest zbyt mały" lub "Odmowa dostępu".

Obiekt procesu został już usunięty.

Ten element członkowski nie jest obsługiwany w systemie Linux lub macOS (tylko platforma.NET Core).

Uwagi

Użyj tego przeciążenia, aby utworzyć nowy proces i jego wątek podstawowy, określając jego nazwę pliku, argumenty wiersza polecenia, nazwę użytkownika, hasło i domenę. Nowy proces uruchamia następnie określony plik wykonywalny w kontekście zabezpieczeń określonych poświadczeń (użytkownika, domeny i hasła).

Ważne

Wywoływanie tej metody z niezaufanymi danymi jest zagrożeniem bezpieczeństwa. Wywołaj tę metodę tylko przy użyciu zaufanych danych. Aby uzyskać więcej informacji, zobacz Weryfikowanie wszystkich danych wejściowych.

Uwaga

Gdy plik wykonywalny znajduje się na dysku zdalnym, należy zidentyfikować udział sieciowy przy użyciu jednolitego identyfikatora zasobu (URI), a nie litery dysku połączonego.

Uwaga

Jeśli adres pliku wykonywalnego do uruchomienia jest adresem URL, proces nie zostanie uruchomiony i null zostanie zwrócony.

To przeciążenie umożliwia rozpoczęcie procesu bez uprzedniego utworzenia nowego Process wystąpienia. Przeciążenie jest alternatywą dla jawnych kroków tworzenia nowego Process wystąpienia, ustawiania FileNamewłaściwości , Arguments, UserName, Passwordi Domain właściwości StartInfo i wywoływania Start dla Process wystąpienia.

Podobnie, w taki sam sposób, jak okno dialogowe Uruchamianie może akceptować nazwę pliku wykonywalnego z rozszerzeniem .exe lub bez tego rozszerzenia, rozszerzenie .exe jest opcjonalne w parametrze fileName . Można na przykład ustawić fileName parametr na "Notepad.exe" lub "Notatnik". fileName Jeśli parametr reprezentuje plik wykonywalny, arguments parametr może reprezentować plik do działania, na przykład plik tekstowy w pliku Notepad.exe myfile.txt.

Uwaga

Nazwa pliku musi reprezentować plik wykonywalny w Start przeciążeniach, które mają userNameparametry , passwordi domain .

Za każdym razem, gdy używasz metody Start do rozpoczęcia procesu, może być konieczne jej zamknięcie lub ryzyko utraty zasobów systemowych. Zamknij procesy przy użyciu polecenia CloseMainWindow lub Kill. Możesz sprawdzić, czy proces został już zamknięty przy użyciu jego HasExited właściwości.

Dotyczy

Start(String, String, SecureString, String)

Źródło:
Process.Unix.cs
Źródło:
Process.Unix.cs
Źródło:
Process.Unix.cs

Ważne

Ten interfejs API nie jest zgodny ze specyfikacją CLS.

Uruchamia zasób procesu, określając nazwę aplikacji, nazwę użytkownika, hasło i domenę oraz kojarzy zasób z nowym Process składnikiem.

public:
 static System::Diagnostics::Process ^ Start(System::String ^ fileName, System::String ^ userName, System::Security::SecureString ^ password, System::String ^ domain);
[System.CLSCompliant(false)]
[System.Runtime.Versioning.SupportedOSPlatform("windows")]
public static System.Diagnostics.Process? Start (string fileName, string userName, System.Security.SecureString password, string domain);
[System.CLSCompliant(false)]
public static System.Diagnostics.Process Start (string fileName, string userName, System.Security.SecureString password, string domain);
public static System.Diagnostics.Process Start (string fileName, string userName, System.Security.SecureString password, string domain);
[<System.CLSCompliant(false)>]
[<System.Runtime.Versioning.SupportedOSPlatform("windows")>]
static member Start : string * string * System.Security.SecureString * string -> System.Diagnostics.Process
[<System.CLSCompliant(false)>]
static member Start : string * string * System.Security.SecureString * string -> System.Diagnostics.Process
static member Start : string * string * System.Security.SecureString * string -> System.Diagnostics.Process
Public Shared Function Start (fileName As String, userName As String, password As SecureString, domain As String) As Process

Parametry

fileName
String

Nazwa pliku aplikacji do uruchomienia w procesie.

userName
String

Nazwa użytkownika do użycia podczas uruchamiania procesu.

password
SecureString

Element SecureString zawierający hasło do użycia podczas uruchamiania procesu.

domain
String

Domena do użycia podczas uruchamiania procesu.

Zwraca

Nowy Process , który jest skojarzony z zasobem procesu lub null jeśli nie zostanie uruchomiony żaden zasób procesu. Należy pamiętać, że nowy proces, który został uruchomiony obok już uruchomionych wystąpień tego samego procesu, będzie niezależny od innych. Ponadto polecenie Start może zwrócić proces inny niż null z właściwością HasExited już ustawioną na true. W takim przypadku rozpoczęty proces mógł aktywować istniejące wystąpienie samego siebie, a następnie zakończyć pracę.

Atrybuty

Wyjątki

Nie określono nazwy pliku.

Wystąpił błąd podczas otwierania skojarzonego pliku.

-lub-

Nie można odnaleźć pliku określonego w pliku fileName .

Obiekt procesu został już usunięty.

Ten element członkowski nie jest obsługiwany w systemie Linux lub macOS (tylko platforma.NET Core).

Przykłady

Poniższy przykład kodu przedstawia użycie tego przeciążenia w celu uruchomienia pliku wykonywalnego, a także pokazuje zgłaszanie błędu Win32Exception podczas próby uruchomienia aplikacji skojarzonej z plikiem nieskładnikowalnym.

// NOTE: This example requires a text.txt file file in your Documents folder
using System;
using System.Diagnostics;
using System.Security;
using System.ComponentModel;

class Example
{
    static void Main()
    {
        Console.Write("Enter your domain: ");
        string domain = Console.ReadLine();
        Console.Write("Enter you user name: ");
        string uname = Console.ReadLine();
        Console.Write("Enter your password: ");
        SecureString password = new SecureString();
        ConsoleKeyInfo key;
        do
        {
            key = Console.ReadKey(true);

            // Ignore any key out of range.
            if (((int)key.Key) >= 33 && ((int)key.Key <= 90) && key.Key != ConsoleKey.Enter)
            {
                // Append the character to the password.
                password.AppendChar(key.KeyChar);
                Console.Write("*");
            }
            // Exit if Enter key is pressed.
        } while (key.Key != ConsoleKey.Enter);
        Console.WriteLine();

        try
        {
            Console.WriteLine("\nTrying to launch NotePad using your login information...");
            Process.Start("notepad.exe", uname, password, domain);
        }
        catch (Win32Exception ex)
        {
            Console.WriteLine(ex.Message);
        }

        string path = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "\\";

        try
        {
            // The following call to Start succeeds if test.txt exists.
            Console.WriteLine("\nTrying to launch 'text.txt'...");
            Process.Start(path + "text.txt");
        }
        catch (Win32Exception ex)
        {
            Console.WriteLine(ex.Message);
        }

        try
        {
            // Attempting to start in a shell using this Start overload fails. This causes
            // the following exception, which is picked up in the catch block below:
            // The specified executable is not a valid application for this OS platform.
            Console.WriteLine("\nTrying to launch 'text.txt' with your login information...");
            Process.Start(path + "text.txt", uname, password, domain);
        }
        catch (Win32Exception ex)
        {
            Console.WriteLine(ex.Message);
        }
        finally
        {
            password.Dispose();
        }
    }
}
' This sample requires a text.txt file file in your documents folder.
' You'll also need to set the startup object in the project to Sub Main.
Imports System.Diagnostics
Imports System.Security
Imports System.ComponentModel

Module Program
    Sub Main()
        Console.Write("Enter your domain: ")
        Dim domain As String = Console.ReadLine()
        Console.Write("Enter you user name: ")
        Dim uname As String = Console.ReadLine()
        Console.Write("Enter your password: ")
        Dim password As New SecureString()
        Dim key As ConsoleKeyInfo
        Do
            key = Console.ReadKey(True)

            ' Ignore any key out of range.
            If key.Key >= 33 AndAlso key.Key <= 90 AndAlso key.Key <> ConsoleKey.Enter Then
                ' Append the character to the password.
                password.AppendChar(key.KeyChar)
                Console.Write("*")
            End If
            ' Exit if Enter key is pressed.
        Loop While key.Key <> ConsoleKey.Enter
        Console.WriteLine()

        Try
            Console.WriteLine(vbCrLf + "Trying to launch NotePad using your login information...")
            Process.Start("notepad.exe", uname, password, domain)
        Catch ex As Win32Exception
            Console.WriteLine(ex.Message)
        End Try

        Dim path As String = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "\"

        Try
            ' The following call to Start succeeds if test.txt exists.
            Console.WriteLine(vbCrLf + "Trying to launch 'text.txt'...")
            Process.Start(path + "Text.txt")
        Catch ex As Win32Exception
            Console.WriteLine(ex.Message)
        End Try

        Try
            ' Attempting to start in a shell using this Start overload fails. This causes
            ' the following exception, which is picked up in the catch block below:
            ' The specified executable is not a valid application for this OS platform.
            Console.WriteLine(vbCrLf + "Trying to launch 'text.txt' with your login information...")
            Process.Start(path + "Text.txt", uname, password, domain)
        Catch ex As Win32Exception
            Console.WriteLine(ex.Message)
        Finally
            password.Dispose()
        End Try
    End Sub
End Module

Uwagi

Użyj tego przeciążenia, aby utworzyć nowy proces i jego wątek podstawowy, określając jego nazwę pliku, nazwę użytkownika, hasło i domenę. Nowy proces uruchamia następnie określony plik wykonywalny w kontekście zabezpieczeń określonych poświadczeń (użytkownika, domeny i hasła).

Ważne

Wywoływanie tej metody z niezaufanymi danymi jest zagrożeniem bezpieczeństwa. Wywołaj tę metodę tylko przy użyciu zaufanych danych. Aby uzyskać więcej informacji, zobacz Weryfikowanie wszystkich danych wejściowych.

Uwaga

Gdy plik wykonywalny znajduje się na dysku zdalnym, należy zidentyfikować udział sieciowy przy użyciu jednolitego identyfikatora zasobu (URI), a nie litery dysku połączonego.

Uwaga

Jeśli adres pliku wykonywalnego do uruchomienia jest adresem URL, proces nie zostanie uruchomiony i null zostanie zwrócony.

To przeciążenie umożliwia rozpoczęcie procesu bez uprzedniego utworzenia nowego Process wystąpienia. Przeciążenie jest alternatywą dla jawnych kroków tworzenia nowego Process wystąpienia, ustawiania FileNamewłaściwości , UserName, Passwordi Domain właściwości StartInfo oraz wywoływania Start wystąpienia Process .

Podobnie, w taki sam sposób, jak okno dialogowe Uruchamianie może akceptować nazwę pliku wykonywalnego z rozszerzeniem .exe lub bez tego rozszerzenia, rozszerzenie .exe jest opcjonalne w parametrze fileName . Można na przykład ustawić fileName parametr na "Notepad.exe" lub "Notatnik". fileName Jeśli parametr reprezentuje plik wykonywalny, arguments parametr może reprezentować plik do działania, na przykład plik tekstowy w pliku Notepad.exe myfile.txt.

Uwaga

Nazwa pliku musi reprezentować plik wykonywalny w Start przeciążeniach, które mają userNameparametry , passwordi domain .

Za każdym razem, gdy używasz metody Start do rozpoczęcia procesu, może być konieczne jej zamknięcie lub ryzyko utraty zasobów systemowych. Zamknij procesy przy użyciu polecenia CloseMainWindow lub Kill. Możesz sprawdzić, czy proces został już zamknięty przy użyciu jego HasExited właściwości.

Dotyczy

Start(String, String)

Źródło:
Process.cs
Źródło:
Process.cs
Źródło:
Process.cs

Uruchamia zasób procesu, określając nazwę aplikacji i zestaw argumentów wiersza polecenia oraz kojarzy zasób z nowym Process składnikiem.

public:
 static System::Diagnostics::Process ^ Start(System::String ^ fileName, System::String ^ arguments);
public static System.Diagnostics.Process Start (string fileName, string arguments);
[System.Runtime.Versioning.UnsupportedOSPlatform("ios")]
[System.Runtime.Versioning.UnsupportedOSPlatform("tvos")]
public static System.Diagnostics.Process Start (string fileName, string arguments);
[System.Runtime.Versioning.UnsupportedOSPlatform("ios")]
[System.Runtime.Versioning.UnsupportedOSPlatform("tvos")]
[System.Runtime.Versioning.SupportedOSPlatform("maccatalyst")]
public static System.Diagnostics.Process Start (string fileName, string arguments);
static member Start : string * string -> System.Diagnostics.Process
[<System.Runtime.Versioning.UnsupportedOSPlatform("ios")>]
[<System.Runtime.Versioning.UnsupportedOSPlatform("tvos")>]
static member Start : string * string -> System.Diagnostics.Process
[<System.Runtime.Versioning.UnsupportedOSPlatform("ios")>]
[<System.Runtime.Versioning.UnsupportedOSPlatform("tvos")>]
[<System.Runtime.Versioning.SupportedOSPlatform("maccatalyst")>]
static member Start : string * string -> System.Diagnostics.Process
Public Shared Function Start (fileName As String, arguments As String) As Process

Parametry

fileName
String

Nazwa pliku aplikacji do uruchomienia w procesie.

arguments
String

Argumenty wiersza polecenia do przekazania podczas uruchamiania procesu.

Zwraca

Nowy Process , który jest skojarzony z zasobem procesu lub null jeśli nie zostanie uruchomiony żaden zasób procesu. Należy pamiętać, że nowy proces, który został uruchomiony obok już uruchomionych wystąpień tego samego procesu, będzie niezależny od innych. Ponadto polecenie Start może zwrócić proces inny niż null z właściwością HasExited już ustawioną na true. W takim przypadku rozpoczęty proces mógł aktywować istniejące wystąpienie samego siebie, a następnie zakończyć pracę.

Atrybuty

Wyjątki

Parametr fileName or arguments to null.

Wystąpił błąd podczas otwierania skojarzonego pliku.

-lub-

Nie można odnaleźć pliku określonego w pliku fileName .

-lub-

Suma długości argumentów i długości pełnej ścieżki do procesu przekracza 2080. Komunikat o błędzie skojarzony z tym wyjątkiem może być jednym z następujących: "Obszar danych przekazany do wywołania systemowego jest zbyt mały" lub "Odmowa dostępu".

Obiekt procesu został już usunięty.

Zmienna środowiskowa PATH ma ciąg zawierający cudzysłowy.

Przykłady

Poniższy przykład najpierw zduplikuje wystąpienie programu Internet Explorer i wyświetla zawartość folderu Ulubione w przeglądarce. Następnie uruchamia kilka innych wystąpień programu Internet Explorer i wyświetla niektóre określone strony lub witryny. Na koniec uruchamia program Internet Explorer z zminimalizowanym oknem podczas przechodzenia do określonej witryny.

#using <System.dll>

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

// Opens the Internet Explorer application.
void OpenApplication(String^ myFavoritesPath)
{
    // Start Internet Explorer. Defaults to the home page.
    Process::Start("IExplore.exe");

    // Display the contents of the favorites folder in the browser.
    Process::Start(myFavoritesPath);
}

// Opens urls and .html documents using Internet Explorer.
void OpenWithArguments()
{
    // URLs are not considered documents. They can only be opened
    // by passing them as arguments.
    Process::Start("IExplore.exe", "www.northwindtraders.com");

    // Start a Web page using a browser associated with .html and .asp files.
    Process::Start("IExplore.exe", "C:\\myPath\\myFile.htm");
    Process::Start("IExplore.exe", "C:\\myPath\\myFile.asp");
}

// Uses the ProcessStartInfo class to start new processes,
// both in a minimized mode.
void OpenWithStartInfo()
{
    ProcessStartInfo^ startInfo = gcnew ProcessStartInfo("IExplore.exe");
    startInfo->WindowStyle = ProcessWindowStyle::Minimized;
    Process::Start(startInfo);
    startInfo->Arguments = "www.northwindtraders.com";
    Process::Start(startInfo);
}

int main()
{
    // Get the path that stores favorite links.
    String^ myFavoritesPath = Environment::GetFolderPath(Environment::SpecialFolder::Favorites);
    OpenApplication(myFavoritesPath);
    OpenWithArguments();
    OpenWithStartInfo();
}
using System;
using System.Diagnostics;
using System.ComponentModel;

namespace MyProcessSample
{
    class MyProcess
    {
        // Opens the Internet Explorer application.
        void OpenApplication(string myFavoritesPath)
        {
            // Start Internet Explorer. Defaults to the home page.
            Process.Start("IExplore.exe");

            // Display the contents of the favorites folder in the browser.
            Process.Start(myFavoritesPath);
        }

        // Opens urls and .html documents using Internet Explorer.
        void OpenWithArguments()
        {
            // url's are not considered documents. They can only be opened
            // by passing them as arguments.
            Process.Start("IExplore.exe", "www.northwindtraders.com");

            // Start a Web page using a browser associated with .html and .asp files.
            Process.Start("IExplore.exe", "C:\\myPath\\myFile.htm");
            Process.Start("IExplore.exe", "C:\\myPath\\myFile.asp");
        }

        // Uses the ProcessStartInfo class to start new processes,
        // both in a minimized mode.
        void OpenWithStartInfo()
        {
            ProcessStartInfo startInfo = new ProcessStartInfo("IExplore.exe");
            startInfo.WindowStyle = ProcessWindowStyle.Minimized;

            Process.Start(startInfo);

            startInfo.Arguments = "www.northwindtraders.com";

            Process.Start(startInfo);
        }

        static void Main()
        {
            // Get the path that stores favorite links.
            string myFavoritesPath =
                Environment.GetFolderPath(Environment.SpecialFolder.Favorites);

            MyProcess myProcess = new MyProcess();

            myProcess.OpenApplication(myFavoritesPath);
            myProcess.OpenWithArguments();
            myProcess.OpenWithStartInfo();
        }
    }
}
Imports System.Diagnostics
Imports System.ComponentModel

Namespace MyProcessSample
    Class MyProcess
        ' Opens the Internet Explorer application.
        Public Sub OpenApplication(myFavoritesPath As String)
            ' Start Internet Explorer. Defaults to the home page.
            Process.Start("IExplore.exe")

            ' Display the contents of the favorites folder in the browser.
            Process.Start(myFavoritesPath)
        End Sub

        ' Opens URLs and .html documents using Internet Explorer.
        Sub OpenWithArguments()
            ' URLs are not considered documents. They can only be opened
            ' by passing them as arguments.
            Process.Start("IExplore.exe", "www.northwindtraders.com")

            ' Start a Web page using a browser associated with .html and .asp files.
            Process.Start("IExplore.exe", "C:\myPath\myFile.htm")
            Process.Start("IExplore.exe", "C:\myPath\myFile.asp")
        End Sub

        ' Uses the ProcessStartInfo class to start new processes,
        ' both in a minimized mode.
        Sub OpenWithStartInfo()
            Dim startInfo As New ProcessStartInfo("IExplore.exe")
            startInfo.WindowStyle = ProcessWindowStyle.Minimized

            Process.Start(startInfo)

            startInfo.Arguments = "www.northwindtraders.com"

            Process.Start(startInfo)
        End Sub

        Shared Sub Main()
            ' Get the path that stores favorite links.
            Dim myFavoritesPath As String = Environment.GetFolderPath(Environment.SpecialFolder.Favorites)

            Dim myProcess As New MyProcess()

            myProcess.OpenApplication(myFavoritesPath)
            myProcess.OpenWithArguments()
            myProcess.OpenWithStartInfo()
        End Sub
    End Class
End Namespace 'MyProcessSample

Uwagi

Użyj tego przeciążenia, aby uruchomić zasób procesu, określając jego nazwę pliku i argumenty wiersza polecenia. Przeciążenie kojarzy zasób z nowym Process obiektem.

Ważne

Wywoływanie tej metody z niezaufanymi danymi jest zagrożeniem bezpieczeństwa. Wywołaj tę metodę tylko przy użyciu zaufanych danych. Aby uzyskać więcej informacji, zobacz Weryfikowanie wszystkich danych wejściowych.

Uwaga

Jeśli adres pliku wykonywalnego do uruchomienia jest adresem URL, proces nie zostanie uruchomiony i null zostanie zwrócony.

To przeciążenie umożliwia rozpoczęcie procesu bez uprzedniego utworzenia nowego Process wystąpienia. Przeciążenie jest alternatywą dla jawnych kroków tworzenia nowego Process wystąpienia, ustawiania FileName elementów członkowskich i ArgumentsStartInfo właściwości oraz wywoływania StartProcess wystąpienia.

Uruchomienie procesu przez określenie nazwy pliku i argumentów jest podobne do wpisywania nazwy pliku i argumentów wiersza polecenia w Run oknie dialogowym menu systemu Windows Start . W związku z tym nazwa pliku nie musi reprezentować pliku wykonywalnego. Może to być dowolny typ pliku, dla którego rozszerzenie zostało skojarzone z aplikacją zainstalowaną w systemie. Na przykład nazwa pliku może mieć rozszerzenie .txt, jeśli masz skojarzone pliki tekstowe z edytorem, takim jak Notatnik, lub może mieć .doc, jeśli masz skojarzone pliki .doc z narzędziem do przetwarzania wyrazów, takim jak Microsoft Word. Podobnie w taki sam sposób, w Run jaki okno dialogowe może akceptować nazwę pliku wykonywalnego z rozszerzeniem .exe lub bez tego rozszerzenia, rozszerzenie .exe jest opcjonalne w parametrze fileName . Można na przykład ustawić fileName parametr na "Notepad.exe" lub "Notatnik". fileName Jeśli parametr reprezentuje plik wykonywalny, arguments parametr może reprezentować plik do działania, na przykład plik tekstowy w pliku Notepad.exe myfile.txt. fileName Jeśli parametr reprezentuje plik polecenia (.cmd), parametr musi zawierać argument "/c" lub "/k", aby określić, arguments czy okno poleceń kończy się, czy pozostaje po zakończeniu.

W przeciwieństwie do innych przeciążeń przeciążenie, Start które nie ma parametrów, nie jest elementem static członkowskim. Użyj tego przeciążenia, gdy utworzono Process już wystąpienie i określone informacje o uruchamianiu (w tym nazwę pliku), a następnie chcesz uruchomić zasób procesu i skojarzyć je z istniejącym Process wystąpieniem. Użyj jednego z static przeciążeń, jeśli chcesz utworzyć nowy Process składnik, a nie uruchomić procesu dla istniejącego składnika. Zarówno to przeciążenie, jak i przeciążenie, które nie ma parametrów, umożliwia określenie nazwy pliku zasobu procesu w celu uruchomienia i przekazania argumentów wiersza polecenia.

Jeśli w systemie zadeklarowana jest zmienna ścieżki przy użyciu cudzysłowów, należy w pełni zakwalifikować ścieżkę podczas uruchamiania dowolnego procesu znalezionego w tej lokalizacji. W przeciwnym razie system nie znajdzie ścieżki. Jeśli na przykład c:\mypath nie znajduje się w ścieżce i dodajesz go przy użyciu cudzysłowów: path = %path%;"c:\mypath", musisz w pełni zakwalifikować dowolny proces podczas c:\mypath jego uruchamiania.

Uwaga

ASP.NET strona sieci Web i kod kontroli serwera są wykonywane w kontekście procesu roboczego ASP.NET na serwerze sieci Web. Jeśli używasz Start metody w ASP.NET stronie sieci Web lub kontroli serwera, nowy proces jest wykonywany na serwerze sieci Web z ograniczonymi uprawnieniami. Proces nie rozpoczyna się w tym samym kontekście co przeglądarka klienta i nie ma dostępu do pulpitu użytkownika.

Za każdym razem, gdy używasz metody Start do rozpoczęcia procesu, może być konieczne jej zamknięcie lub ryzyko utraty zasobów systemowych. Zamknij procesy przy użyciu polecenia CloseMainWindow lub Kill. Możesz sprawdzić, czy proces został już zamknięty przy użyciu jego HasExited właściwości.

Uwaga dotycząca stanów mieszkania w zarządzanych wątkach jest niezbędna tutaj. Gdy UseShellExecute właściwość składnika StartInfo procesu jest true włączona, upewnij się, że w aplikacji ustawiono model wątków, ustawiając atrybut [STAThread] w metodzie main() . W przeciwnym razie zarządzany wątek może znajdować się w unknown stanie lub umieścić go w MTA stanie, który powoduje konflikt z elementem UseShellExecutetrue. Niektóre metody wymagają, aby stan mieszkania nie był unknown. Jeśli stan nie jest jawnie ustawiony, gdy aplikacja napotka taką metodę, domyślnie jest ustawiona wartość MTA, a po ustawieniu stanu mieszkania nie można zmienić. MTA Jednak powoduje zgłoszenie wyjątku, gdy powłoka systemu operacyjnego zarządza wątkiem.

Zobacz też

Dotyczy

Start(String)

Źródło:
Process.cs
Źródło:
Process.cs
Źródło:
Process.cs

Uruchamia zasób procesu, określając nazwę dokumentu lub pliku aplikacji i kojarzy zasób z nowym Process składnikiem.

public:
 static System::Diagnostics::Process ^ Start(System::String ^ fileName);
public static System.Diagnostics.Process Start (string fileName);
[System.Runtime.Versioning.UnsupportedOSPlatform("ios")]
[System.Runtime.Versioning.UnsupportedOSPlatform("tvos")]
public static System.Diagnostics.Process Start (string fileName);
[System.Runtime.Versioning.UnsupportedOSPlatform("ios")]
[System.Runtime.Versioning.UnsupportedOSPlatform("tvos")]
[System.Runtime.Versioning.SupportedOSPlatform("maccatalyst")]
public static System.Diagnostics.Process Start (string fileName);
static member Start : string -> System.Diagnostics.Process
[<System.Runtime.Versioning.UnsupportedOSPlatform("ios")>]
[<System.Runtime.Versioning.UnsupportedOSPlatform("tvos")>]
static member Start : string -> System.Diagnostics.Process
[<System.Runtime.Versioning.UnsupportedOSPlatform("ios")>]
[<System.Runtime.Versioning.UnsupportedOSPlatform("tvos")>]
[<System.Runtime.Versioning.SupportedOSPlatform("maccatalyst")>]
static member Start : string -> System.Diagnostics.Process
Public Shared Function Start (fileName As String) As Process

Parametry

fileName
String

Nazwa dokumentu lub pliku aplikacji do uruchomienia w procesie.

Zwraca

Nowy Process , który jest skojarzony z zasobem procesu lub null jeśli nie zostanie uruchomiony żaden zasób procesu. Należy pamiętać, że nowy proces, który został uruchomiony obok już uruchomionych wystąpień tego samego procesu, będzie niezależny od innych. Ponadto polecenie Start może zwrócić proces inny niż null z właściwością HasExited już ustawioną na true. W takim przypadku rozpoczęty proces mógł aktywować istniejące wystąpienie samego siebie, a następnie zakończyć pracę.

Atrybuty

Wyjątki

Wystąpił błąd podczas otwierania skojarzonego pliku.

-lub-

Nie można odnaleźć pliku określonego w pliku fileName .

Obiekt procesu został już usunięty.

Zmienna środowiskowa PATH ma ciąg zawierający cudzysłowy.

Przykłady

Poniższy przykład najpierw zduplikuje wystąpienie programu Internet Explorer i wyświetla zawartość folderu Ulubione w przeglądarce. Następnie uruchamia kilka innych wystąpień programu Internet Explorer i wyświetla niektóre określone strony lub witryny. Na koniec uruchamia program Internet Explorer z zminimalizowanym oknem podczas przechodzenia do określonej witryny.

#using <System.dll>

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

// Opens the Internet Explorer application.
void OpenApplication(String^ myFavoritesPath)
{
    // Start Internet Explorer. Defaults to the home page.
    Process::Start("IExplore.exe");

    // Display the contents of the favorites folder in the browser.
    Process::Start(myFavoritesPath);
}

// Opens urls and .html documents using Internet Explorer.
void OpenWithArguments()
{
    // URLs are not considered documents. They can only be opened
    // by passing them as arguments.
    Process::Start("IExplore.exe", "www.northwindtraders.com");

    // Start a Web page using a browser associated with .html and .asp files.
    Process::Start("IExplore.exe", "C:\\myPath\\myFile.htm");
    Process::Start("IExplore.exe", "C:\\myPath\\myFile.asp");
}

// Uses the ProcessStartInfo class to start new processes,
// both in a minimized mode.
void OpenWithStartInfo()
{
    ProcessStartInfo^ startInfo = gcnew ProcessStartInfo("IExplore.exe");
    startInfo->WindowStyle = ProcessWindowStyle::Minimized;
    Process::Start(startInfo);
    startInfo->Arguments = "www.northwindtraders.com";
    Process::Start(startInfo);
}

int main()
{
    // Get the path that stores favorite links.
    String^ myFavoritesPath = Environment::GetFolderPath(Environment::SpecialFolder::Favorites);
    OpenApplication(myFavoritesPath);
    OpenWithArguments();
    OpenWithStartInfo();
}
using System;
using System.Diagnostics;
using System.ComponentModel;

namespace MyProcessSample
{
    class MyProcess
    {
        // Opens the Internet Explorer application.
        void OpenApplication(string myFavoritesPath)
        {
            // Start Internet Explorer. Defaults to the home page.
            Process.Start("IExplore.exe");

            // Display the contents of the favorites folder in the browser.
            Process.Start(myFavoritesPath);
        }

        // Opens urls and .html documents using Internet Explorer.
        void OpenWithArguments()
        {
            // url's are not considered documents. They can only be opened
            // by passing them as arguments.
            Process.Start("IExplore.exe", "www.northwindtraders.com");

            // Start a Web page using a browser associated with .html and .asp files.
            Process.Start("IExplore.exe", "C:\\myPath\\myFile.htm");
            Process.Start("IExplore.exe", "C:\\myPath\\myFile.asp");
        }

        // Uses the ProcessStartInfo class to start new processes,
        // both in a minimized mode.
        void OpenWithStartInfo()
        {
            ProcessStartInfo startInfo = new ProcessStartInfo("IExplore.exe");
            startInfo.WindowStyle = ProcessWindowStyle.Minimized;

            Process.Start(startInfo);

            startInfo.Arguments = "www.northwindtraders.com";

            Process.Start(startInfo);
        }

        static void Main()
        {
            // Get the path that stores favorite links.
            string myFavoritesPath =
                Environment.GetFolderPath(Environment.SpecialFolder.Favorites);

            MyProcess myProcess = new MyProcess();

            myProcess.OpenApplication(myFavoritesPath);
            myProcess.OpenWithArguments();
            myProcess.OpenWithStartInfo();
        }
    }
}
Imports System.Diagnostics
Imports System.ComponentModel

Namespace MyProcessSample
    Class MyProcess
        ' Opens the Internet Explorer application.
        Public Sub OpenApplication(myFavoritesPath As String)
            ' Start Internet Explorer. Defaults to the home page.
            Process.Start("IExplore.exe")

            ' Display the contents of the favorites folder in the browser.
            Process.Start(myFavoritesPath)
        End Sub

        ' Opens URLs and .html documents using Internet Explorer.
        Sub OpenWithArguments()
            ' URLs are not considered documents. They can only be opened
            ' by passing them as arguments.
            Process.Start("IExplore.exe", "www.northwindtraders.com")

            ' Start a Web page using a browser associated with .html and .asp files.
            Process.Start("IExplore.exe", "C:\myPath\myFile.htm")
            Process.Start("IExplore.exe", "C:\myPath\myFile.asp")
        End Sub

        ' Uses the ProcessStartInfo class to start new processes,
        ' both in a minimized mode.
        Sub OpenWithStartInfo()
            Dim startInfo As New ProcessStartInfo("IExplore.exe")
            startInfo.WindowStyle = ProcessWindowStyle.Minimized

            Process.Start(startInfo)

            startInfo.Arguments = "www.northwindtraders.com"

            Process.Start(startInfo)
        End Sub

        Shared Sub Main()
            ' Get the path that stores favorite links.
            Dim myFavoritesPath As String = Environment.GetFolderPath(Environment.SpecialFolder.Favorites)

            Dim myProcess As New MyProcess()

            myProcess.OpenApplication(myFavoritesPath)
            myProcess.OpenWithArguments()
            myProcess.OpenWithStartInfo()
        End Sub
    End Class
End Namespace 'MyProcessSample

Uwagi

Użyj tego przeciążenia, aby uruchomić zasób procesu, określając jego nazwę pliku. Przeciążenie kojarzy zasób z nowym Process obiektem.

Ważne

Wywoływanie tej metody z niezaufanymi danymi jest zagrożeniem bezpieczeństwa. Wywołaj tę metodę tylko przy użyciu zaufanych danych. Aby uzyskać więcej informacji, zobacz Weryfikowanie wszystkich danych wejściowych.

Uwaga

Jeśli adres pliku wykonywalnego do uruchomienia jest adresem URL, proces nie zostanie uruchomiony i null zostanie zwrócony.

To przeciążenie umożliwia rozpoczęcie procesu bez uprzedniego utworzenia nowego Process wystąpienia. Przeciążenie jest alternatywą dla jawnych kroków tworzenia nowego Process wystąpienia, ustawiania FileName elementu członkowskiego StartInfo właściwości i wywoływania StartProcess wystąpienia.

Aplikację ClickOnce można uruchomić, ustawiając fileName parametr na lokalizację (na przykład adres internetowy), z którego pierwotnie zainstalowano aplikację. Nie uruchamiaj aplikacji ClickOnce, określając jego zainstalowaną lokalizację na dysku twardym.

Uruchomienie procesu przez określenie nazwy pliku jest podobne do wpisywania informacji w Run oknie dialogowym menu systemu Windows Start . W związku z tym nazwa pliku nie musi reprezentować pliku wykonywalnego. Może to być dowolny typ pliku, dla którego rozszerzenie zostało skojarzone z aplikacją zainstalowaną w systemie. Na przykład nazwa pliku może mieć rozszerzenie .txt, jeśli masz skojarzone pliki tekstowe z edytorem, takim jak Notatnik, lub może mieć .doc, jeśli masz skojarzone pliki .doc z narzędziem do przetwarzania wyrazów, takim jak Microsoft Word. Podobnie w taki sam sposób, w Run jaki okno dialogowe może akceptować nazwę pliku wykonywalnego z rozszerzeniem .exe lub bez tego rozszerzenia, rozszerzenie .exe jest opcjonalne w parametrze fileName . Można na przykład ustawić fileName parametr na "Notepad.exe" lub "Notatnik".

To przeciążenie nie zezwala na argumenty wiersza polecenia dla procesu. Jeśli musisz określić co najmniej jeden argument wiersza polecenia dla procesu, użyj Process.Start(ProcessStartInfo) przeciążeń lub Process.Start(String, String) .

W przeciwieństwie do innych przeciążeń przeciążenie, Start które nie ma parametrów, nie jest elementem static członkowskim. Użyj tego przeciążenia, gdy utworzono Process już wystąpienie i określone informacje o uruchamianiu (w tym nazwę pliku), a następnie chcesz uruchomić zasób procesu i skojarzyć je z istniejącym Process wystąpieniem. Użyj jednego z static przeciążeń, jeśli chcesz utworzyć nowy Process składnik, a nie uruchomić procesu dla istniejącego składnika. To przeciążenie i przeciążenie, które nie ma parametrów, pozwala określić nazwę pliku zasobu procesu do uruchomienia.

Jeśli w systemie zadeklarowana jest zmienna ścieżki przy użyciu cudzysłowów, należy w pełni zakwalifikować ścieżkę podczas uruchamiania dowolnego procesu znalezionego w tej lokalizacji. W przeciwnym razie system nie znajdzie ścieżki. Jeśli na przykład c:\mypath nie znajduje się w ścieżce i dodajesz go przy użyciu cudzysłowów: path = %path%;"c:\mypath", musisz w pełni zakwalifikować dowolny proces podczas c:\mypath jego uruchamiania.

Uwaga

ASP.NET strona sieci Web i kod kontroli serwera są wykonywane w kontekście procesu roboczego ASP.NET na serwerze sieci Web. Jeśli używasz Start metody w ASP.NET stronie sieci Web lub kontroli serwera, nowy proces jest wykonywany na serwerze sieci Web z ograniczonymi uprawnieniami. Proces nie rozpoczyna się w tym samym kontekście co przeglądarka klienta i nie ma dostępu do pulpitu użytkownika.

Za każdym razem, gdy używasz metody Start do rozpoczęcia procesu, może być konieczne jej zamknięcie lub ryzyko utraty zasobów systemowych. Zamknij procesy przy użyciu polecenia CloseMainWindow lub Kill. Możesz sprawdzić, czy proces został już zamknięty przy użyciu jego HasExited właściwości.

Uwaga dotycząca stanów mieszkania w zarządzanych wątkach jest niezbędna tutaj. Gdy UseShellExecute właściwość składnika StartInfo procesu jest true włączona, upewnij się, że w aplikacji ustawiono model wątków, ustawiając atrybut [STAThread] w metodzie main() . W przeciwnym razie zarządzany wątek może znajdować się w unknown stanie lub umieścić go w MTA stanie, który powoduje konflikt z elementem UseShellExecutetrue. Niektóre metody wymagają, aby stan mieszkania nie był unknown. Jeśli stan nie jest jawnie ustawiony, gdy aplikacja napotka taką metodę, domyślnie jest ustawiona wartość MTA, a po ustawieniu stanu mieszkania nie można zmienić. MTA Jednak powoduje zgłoszenie wyjątku, gdy powłoka systemu operacyjnego zarządza wątkiem.

Zobacz też

Dotyczy

Start(ProcessStartInfo)

Źródło:
Process.cs
Źródło:
Process.cs
Źródło:
Process.cs

Uruchamia zasób procesu określony przez parametr zawierający informacje o uruchamianiu procesu (na przykład nazwę pliku procesu do uruchomienia) i kojarzy zasób z nowym Process składnikiem.

public:
 static System::Diagnostics::Process ^ Start(System::Diagnostics::ProcessStartInfo ^ startInfo);
public static System.Diagnostics.Process? Start (System.Diagnostics.ProcessStartInfo startInfo);
[System.Runtime.Versioning.UnsupportedOSPlatform("ios")]
[System.Runtime.Versioning.UnsupportedOSPlatform("tvos")]
public static System.Diagnostics.Process? Start (System.Diagnostics.ProcessStartInfo startInfo);
[System.Runtime.Versioning.UnsupportedOSPlatform("ios")]
[System.Runtime.Versioning.UnsupportedOSPlatform("tvos")]
[System.Runtime.Versioning.SupportedOSPlatform("maccatalyst")]
public static System.Diagnostics.Process? Start (System.Diagnostics.ProcessStartInfo startInfo);
public static System.Diagnostics.Process Start (System.Diagnostics.ProcessStartInfo startInfo);
static member Start : System.Diagnostics.ProcessStartInfo -> System.Diagnostics.Process
[<System.Runtime.Versioning.UnsupportedOSPlatform("ios")>]
[<System.Runtime.Versioning.UnsupportedOSPlatform("tvos")>]
static member Start : System.Diagnostics.ProcessStartInfo -> System.Diagnostics.Process
[<System.Runtime.Versioning.UnsupportedOSPlatform("ios")>]
[<System.Runtime.Versioning.UnsupportedOSPlatform("tvos")>]
[<System.Runtime.Versioning.SupportedOSPlatform("maccatalyst")>]
static member Start : System.Diagnostics.ProcessStartInfo -> System.Diagnostics.Process
Public Shared Function Start (startInfo As ProcessStartInfo) As Process

Parametry

startInfo
ProcessStartInfo

Element ProcessStartInfo zawierający informacje używane do uruchamiania procesu, w tym nazwę pliku i wszelkie argumenty wiersza polecenia.

Zwraca

Nowy Process , który jest skojarzony z zasobem procesu lub null jeśli nie zostanie uruchomiony żaden zasób procesu. Należy pamiętać, że nowy proces, który został uruchomiony obok już uruchomionych wystąpień tego samego procesu, będzie niezależny od innych. Ponadto polecenie Start może zwrócić proces inny niż null z właściwością HasExited już ustawioną na true. W takim przypadku rozpoczęty proces mógł aktywować istniejące wystąpienie samego siebie, a następnie zakończyć pracę.

Atrybuty

Wyjątki

Nie określono nazwy pliku we właściwości parametru startInfoFileName .

-lub-

Właściwość UseShellExecute parametru startInfo to true , a RedirectStandardInputwłaściwość , RedirectStandardOutputlub RedirectStandardError jest również true.

-lub-

Właściwość UseShellExecute parametru startInfo to true , a UserName właściwość nie null jest pusta lub Password właściwość nie nulljest .

Parametr startInfo to null.

Obiekt procesu został już usunięty.

Wystąpił błąd podczas otwierania skojarzonego pliku.

-lub-

Nie można odnaleźć pliku określonego we właściwości parametru startInfoFileName .

-lub-

Suma długości argumentów i długości pełnej ścieżki do procesu przekracza 2080. Komunikat o błędzie skojarzony z tym wyjątkiem może być jednym z następujących: "Obszar danych przekazany do wywołania systemowego jest zbyt mały" lub "Odmowa dostępu".

Metoda nie jest obsługiwana w systemach operacyjnych bez obsługi powłoki, takiej jak Nano Server (tylko platforma.NET Core).

Przykłady

Poniższy przykład najpierw zduplikuje wystąpienie programu Internet Explorer i wyświetla zawartość folderu Ulubione w przeglądarce. Następnie uruchamia kilka innych wystąpień programu Internet Explorer i wyświetla niektóre określone strony lub witryny. Na koniec uruchamia program Internet Explorer z zminimalizowanym oknem podczas przechodzenia do określonej witryny.

Aby uzyskać dodatkowe przykłady innych zastosowań tej metody, zapoznaj się z poszczególnymi ProcessStartInfo właściwościami klasy.

#using <System.dll>

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

// Opens the Internet Explorer application.
void OpenApplication(String^ myFavoritesPath)
{
    // Start Internet Explorer. Defaults to the home page.
    Process::Start("IExplore.exe");

    // Display the contents of the favorites folder in the browser.
    Process::Start(myFavoritesPath);
}

// Opens urls and .html documents using Internet Explorer.
void OpenWithArguments()
{
    // URLs are not considered documents. They can only be opened
    // by passing them as arguments.
    Process::Start("IExplore.exe", "www.northwindtraders.com");

    // Start a Web page using a browser associated with .html and .asp files.
    Process::Start("IExplore.exe", "C:\\myPath\\myFile.htm");
    Process::Start("IExplore.exe", "C:\\myPath\\myFile.asp");
}

// Uses the ProcessStartInfo class to start new processes,
// both in a minimized mode.
void OpenWithStartInfo()
{
    ProcessStartInfo^ startInfo = gcnew ProcessStartInfo("IExplore.exe");
    startInfo->WindowStyle = ProcessWindowStyle::Minimized;
    Process::Start(startInfo);
    startInfo->Arguments = "www.northwindtraders.com";
    Process::Start(startInfo);
}

int main()
{
    // Get the path that stores favorite links.
    String^ myFavoritesPath = Environment::GetFolderPath(Environment::SpecialFolder::Favorites);
    OpenApplication(myFavoritesPath);
    OpenWithArguments();
    OpenWithStartInfo();
}
using System;
using System.Diagnostics;
using System.ComponentModel;

namespace MyProcessSample
{
    class MyProcess
    {
        // Opens the Internet Explorer application.
        void OpenApplication(string myFavoritesPath)
        {
            // Start Internet Explorer. Defaults to the home page.
            Process.Start("IExplore.exe");

            // Display the contents of the favorites folder in the browser.
            Process.Start(myFavoritesPath);
        }

        // Opens urls and .html documents using Internet Explorer.
        void OpenWithArguments()
        {
            // url's are not considered documents. They can only be opened
            // by passing them as arguments.
            Process.Start("IExplore.exe", "www.northwindtraders.com");

            // Start a Web page using a browser associated with .html and .asp files.
            Process.Start("IExplore.exe", "C:\\myPath\\myFile.htm");
            Process.Start("IExplore.exe", "C:\\myPath\\myFile.asp");
        }

        // Uses the ProcessStartInfo class to start new processes,
        // both in a minimized mode.
        void OpenWithStartInfo()
        {
            ProcessStartInfo startInfo = new ProcessStartInfo("IExplore.exe");
            startInfo.WindowStyle = ProcessWindowStyle.Minimized;

            Process.Start(startInfo);

            startInfo.Arguments = "www.northwindtraders.com";

            Process.Start(startInfo);
        }

        static void Main()
        {
            // Get the path that stores favorite links.
            string myFavoritesPath =
                Environment.GetFolderPath(Environment.SpecialFolder.Favorites);

            MyProcess myProcess = new MyProcess();

            myProcess.OpenApplication(myFavoritesPath);
            myProcess.OpenWithArguments();
            myProcess.OpenWithStartInfo();
        }
    }
}
Imports System.Diagnostics
Imports System.ComponentModel

Namespace MyProcessSample
    Class MyProcess
        ' Opens the Internet Explorer application.
        Public Sub OpenApplication(myFavoritesPath As String)
            ' Start Internet Explorer. Defaults to the home page.
            Process.Start("IExplore.exe")

            ' Display the contents of the favorites folder in the browser.
            Process.Start(myFavoritesPath)
        End Sub

        ' Opens URLs and .html documents using Internet Explorer.
        Sub OpenWithArguments()
            ' URLs are not considered documents. They can only be opened
            ' by passing them as arguments.
            Process.Start("IExplore.exe", "www.northwindtraders.com")

            ' Start a Web page using a browser associated with .html and .asp files.
            Process.Start("IExplore.exe", "C:\myPath\myFile.htm")
            Process.Start("IExplore.exe", "C:\myPath\myFile.asp")
        End Sub

        ' Uses the ProcessStartInfo class to start new processes,
        ' both in a minimized mode.
        Sub OpenWithStartInfo()
            Dim startInfo As New ProcessStartInfo("IExplore.exe")
            startInfo.WindowStyle = ProcessWindowStyle.Minimized

            Process.Start(startInfo)

            startInfo.Arguments = "www.northwindtraders.com"

            Process.Start(startInfo)
        End Sub

        Shared Sub Main()
            ' Get the path that stores favorite links.
            Dim myFavoritesPath As String = Environment.GetFolderPath(Environment.SpecialFolder.Favorites)

            Dim myProcess As New MyProcess()

            myProcess.OpenApplication(myFavoritesPath)
            myProcess.OpenWithArguments()
            myProcess.OpenWithStartInfo()
        End Sub
    End Class
End Namespace 'MyProcessSample

Uwagi

Użyj tego przeciążenia, aby uruchomić zasób procesu, określając ProcessStartInfo wystąpienie. Przeciążenie kojarzy zasób z nowym Process obiektem.

Ważne

Wywoływanie tej metody z niezaufanymi danymi jest zagrożeniem bezpieczeństwa. Wywołaj tę metodę tylko przy użyciu zaufanych danych. Aby uzyskać więcej informacji, zobacz Weryfikowanie wszystkich danych wejściowych.

Uwaga

Jeśli adres pliku wykonywalnego do uruchomienia jest adresem URL, proces nie zostanie uruchomiony i null zostanie zwrócony.

To przeciążenie umożliwia rozpoczęcie procesu bez uprzedniego utworzenia nowego Process wystąpienia. Użycie tego przeciążenia z parametrem ProcessStartInfo jest alternatywą dla jawnych kroków tworzenia nowego Process wystąpienia, ustawiania jego StartInfo właściwości i wywoływania Start wystąpienia Process .

ProcessStartInfo Użycie wystąpienia jako parametru umożliwia wywołanie Start z największą kontrolą nad tym, co jest przekazywane do wywołania, aby rozpocząć proces. Jeśli musisz przekazać tylko nazwę pliku lub nazwę pliku i argumenty, nie jest konieczne utworzenie nowego ProcessStartInfo wystąpienia, chociaż jest to opcja. Jedyną Process.StartInfo właściwością, którą należy ustawić, jest FileName właściwość . Właściwość FileName nie musi reprezentować pliku wykonywalnego. Może to być dowolny typ pliku, dla którego rozszerzenie zostało skojarzone z aplikacją zainstalowaną w systemie. Na przykład właściwość może mieć rozszerzenie .txt, FileName jeśli masz skojarzone pliki tekstowe z edytorem, takim jak Notatnik, lub może mieć rozszerzenie .doc, jeśli masz skojarzone pliki .doc z narzędziem do przetwarzania wyrazów, takim jak Microsoft Word.

Aplikację ClickOnce można uruchomić, określając lokalizację (na przykład adres internetowy), z której pierwotnie zainstalowano aplikację. Nie uruchamiaj aplikacji ClickOnce, określając jego zainstalowaną lokalizację na dysku twardym.

ProcessStartInfo.UserName Jeśli właściwość StartInfo i ProcessStartInfo.Password wystąpienia jest ustawiona, wywoływana jest funkcja niezarządzanaCreateProcessWithLogonW, która uruchamia proces w nowym oknie, nawet jeśli ProcessStartInfo.CreateNoWindow wartość właściwości to true lub ProcessStartInfo.WindowStyle wartość właściwości to ProcessWindowStyle.Hidden. ProcessStartInfo.Domain Jeśli właściwość ma nullwartość , ProcessStartInfo.UserName właściwość musi być w formacie NAZWY UPN, użytkownik@DNS_domain_name.

W przeciwieństwie do innych przeciążeń przeciążenie, Start które nie ma parametrów, nie jest elementem static członkowskim. Użyj tego przeciążenia, gdy utworzono Process już wystąpienie i określone informacje o uruchamianiu (w tym nazwę pliku), a następnie chcesz uruchomić zasób procesu i skojarzyć je z istniejącym Process wystąpieniem. Użyj jednego z static przeciążeń, jeśli chcesz utworzyć nowy Process składnik, a nie uruchomić procesu dla istniejącego składnika. Zarówno to przeciążenie, jak i przeciążenie, które nie ma parametrów, pozwala określić informacje o uruchamianiu zasobu procesu przy użyciu ProcessStartInfo wystąpienia.

Jeśli w systemie zadeklarowana jest zmienna ścieżki przy użyciu cudzysłowów, należy w pełni zakwalifikować ścieżkę podczas uruchamiania dowolnego procesu znalezionego w tej lokalizacji. W przeciwnym razie system nie znajdzie ścieżki. Jeśli na przykład c:\mypath nie znajduje się w ścieżce i dodajesz go przy użyciu cudzysłowów: path = %path%;"c:\mypath", musisz w pełni zakwalifikować dowolny proces podczas c:\mypath jego uruchamiania.

Uwaga

ASP.NET strona sieci Web i kod kontroli serwera są wykonywane w kontekście procesu roboczego ASP.NET na serwerze sieci Web. Jeśli używasz Start metody w ASP.NET stronie sieci Web lub kontroli serwera, nowy proces jest wykonywany na serwerze sieci Web z ograniczonymi uprawnieniami. Proces nie rozpoczyna się w tym samym kontekście co przeglądarka klienta i nie ma dostępu do pulpitu użytkownika.

Za każdym razem, gdy używasz metody Start do rozpoczęcia procesu, może być konieczne jej zamknięcie lub ryzyko utraty zasobów systemowych. Zamknij procesy przy użyciu polecenia CloseMainWindow lub Kill. Możesz sprawdzić, czy proces został już zamknięty przy użyciu jego HasExited właściwości.

Uwaga dotycząca stanów mieszkania w zarządzanych wątkach jest niezbędna tutaj. Gdy UseShellExecute parametr znajduje true się w parametrze startInfo , upewnij się, że w aplikacji ustawiono model wątków, ustawiając atrybut [STAThread] w metodzie main() . W przeciwnym razie zarządzany wątek może znajdować się w unknown stanie lub umieścić go w MTA stanie, który powoduje konflikt z elementem UseShellExecutetrue. Niektóre metody wymagają, aby stan mieszkania nie był unknown. Jeśli stan nie jest jawnie ustawiony, gdy aplikacja napotka taką metodę, domyślnie jest ustawiona wartość MTA, a po ustawieniu stanu mieszkania nie można zmienić. MTA Jednak powoduje zgłoszenie wyjątku, gdy powłoka systemu operacyjnego zarządza wątkiem.

Zobacz też

Dotyczy

Start()

Źródło:
Process.cs
Źródło:
Process.cs
Źródło:
Process.cs

Uruchamia (lub ponownie używa) zasobu procesu określonego StartInfo przez właściwość tego Process składnika i kojarzy go ze składnikiem.

public:
 bool Start();
public bool Start ();
[System.Runtime.Versioning.UnsupportedOSPlatform("ios")]
[System.Runtime.Versioning.UnsupportedOSPlatform("tvos")]
public bool Start ();
[System.Runtime.Versioning.UnsupportedOSPlatform("ios")]
[System.Runtime.Versioning.UnsupportedOSPlatform("tvos")]
[System.Runtime.Versioning.SupportedOSPlatform("maccatalyst")]
public bool Start ();
member this.Start : unit -> bool
[<System.Runtime.Versioning.UnsupportedOSPlatform("ios")>]
[<System.Runtime.Versioning.UnsupportedOSPlatform("tvos")>]
member this.Start : unit -> bool
[<System.Runtime.Versioning.UnsupportedOSPlatform("ios")>]
[<System.Runtime.Versioning.UnsupportedOSPlatform("tvos")>]
[<System.Runtime.Versioning.SupportedOSPlatform("maccatalyst")>]
member this.Start : unit -> bool
Public Function Start () As Boolean

Zwraca

true jeśli zasób procesu jest uruchomiony; false jeśli nie zostanie uruchomiony nowy zasób procesu (na przykład jeśli istniejący proces zostanie ponownie użyty).

Atrybuty

Wyjątki

Nie określono nazwy pliku w elemencie Process .StartInfo

-lub-

Element UseShellExecute członkowski StartInfo właściwości to true , RedirectStandardInput, RedirectStandardOutputlub RedirectStandardError .true

Wystąpił błąd podczas otwierania skojarzonego pliku.

Obiekt procesu został już usunięty.

Metoda nie jest obsługiwana w systemach operacyjnych bez obsługi powłoki, takiej jak Nano Server (tylko platforma.NET Core).

Przykłady

W poniższym przykładzie użyto wystąpienia Process klasy, aby rozpocząć proces.

#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

Uwagi

Użyj tego przeciążenia, aby uruchomić zasób procesu i skojarzyć go z bieżącym Process składnikiem. Wartość true zwracana wskazuje, że został uruchomiony nowy zasób procesu. Jeśli zasób procesu określony przez FileName element członkowski StartInfo właściwości jest już uruchomiony na komputerze, nie zostanie uruchomiony żaden dodatkowy zasób procesu. Zamiast tego uruchomiony zasób procesu jest ponownie używany i false zwracany.

Aplikację ClickOnce można uruchomić, określając lokalizację (na przykład adres internetowy), z której pierwotnie zainstalowano aplikację. Nie uruchamiaj aplikacji ClickOnce, określając jego zainstalowaną lokalizację na dysku twardym.

Ważne

Użycie wystąpienia tego obiektu z niezaufanymi danymi jest zagrożeniem bezpieczeństwa. Użyj tego obiektu tylko z zaufanymi danymi. Aby uzyskać więcej informacji, zobacz Weryfikowanie wszystkich danych wejściowych.

Uwaga

Jeśli używasz programu Visual Studio, to przeciążenie Start metody jest tym, który wstawiasz do kodu po przeciągnięciu Process składnika do projektanta. Properties Użyj okna, aby rozwinąć kategorię StartInfo i zapisać odpowiednią wartość we FileName właściwości. Zmiany zostaną wyświetlone w procedurze formularza InitializeComponent .

To przeciążenie Start nie static jest metodą. Należy wywołać go z wystąpienia Process klasy. Przed wywołaniem Startmetody należy najpierw określić StartInfo informacje o właściwości dla tego Process wystąpienia, ponieważ te informacje są używane do określenia zasobu procesu do uruchomienia.

Inne przeciążenia Start metody to static elementy członkowskie. Przed wywołaniem tych przeciążeń metody nie trzeba tworzyć wystąpienia Process składnika. Zamiast tego możesz wywołać Start samą klasę Process , a nowy Process składnik zostanie utworzony, jeśli proces został uruchomiony. null Może też zostać zwrócony, jeśli proces został ponownie użyty. Zasób procesu jest automatycznie skojarzony z nowym Process składnikiem zwracanym przez metodę Start .

Elementy StartInfo członkowskie mogą służyć do duplikowania funkcjonalności Run okna dialogowego menu systemu Windows Start . Wszystko, co można wpisać w wierszu polecenia, można uruchomić, ustawiając odpowiednie wartości we StartInfo właściwości. Jedyną StartInfo właściwością, która musi być ustawiona FileName , jest właściwość . Właściwość FileName nie musi być plikiem wykonywalnym. Może to być dowolny typ pliku, dla którego rozszerzenie zostało skojarzone z aplikacją zainstalowaną w systemie. Na przykład FileName właściwość może mieć rozszerzenie .txt, jeśli masz skojarzone pliki tekstowe z edytorem, takim jak Notatnik, lub może mieć rozszerzenie .doc, jeśli masz skojarzone pliki .doc z narzędziem do przetwarzania wyrazów, takim jak Microsoft Word.

W wierszu polecenia można określić akcje do wykonania dla niektórych typów plików. Można na przykład drukować dokumenty lub edytować pliki tekstowe. Określ te akcje przy użyciu Verb elementu członkowskiego StartInfo właściwości . W przypadku innych typów plików można określić argumenty wiersza polecenia podczas uruchamiania pliku z okna dialogowego Run . Możesz na przykład przekazać adres URL jako argument, jeśli określisz przeglądarkę FileNamejako . Te argumenty można określić w elemencie StartInfo członkowskim właściwości Arguments .

Jeśli w systemie zadeklarowana jest zmienna ścieżki przy użyciu cudzysłowów, należy w pełni zakwalifikować ścieżkę podczas uruchamiania dowolnego procesu znalezionego w tej lokalizacji. W przeciwnym razie system nie znajdzie ścieżki. Na przykład, jeśli c:\mypath nie znajduje się w ścieżce i dodajesz go przy użyciu cudzysłowów: path = %path%;"c:\mypath", musisz w c:\mypath pełni zakwalifikować dowolny proces podczas jego uruchamiania.

Uwaga

ASP.NET strony sieci Web i kodu sterowania serwera są wykonywane w kontekście procesu roboczego ASP.NET na serwerze sieci Web. Jeśli używasz Start metody w ASP.NET stronie sieci Web lub kontroli serwera, nowy proces jest wykonywany na serwerze sieci Web z ograniczonymi uprawnieniami. Proces nie jest uruchamiany w tym samym kontekście co przeglądarka klienta i nie ma dostępu do pulpitu użytkownika.

Za każdym razem, gdy używasz Start polecenia do rozpoczęcia procesu, może być konieczne jego zamknięcie lub ryzyko utraty zasobów systemowych. Zamknij procesy przy użyciu polecenia CloseMainWindow lub Kill. Możesz sprawdzić, czy proces został już zamknięty, używając jego HasExited właściwości.

Uwaga dotycząca stanów mieszkań w zarządzanych wątkach jest niezbędna tutaj. Gdy UseShellExecute element znajduje true się we właściwości składnika StartInfo procesu, upewnij się, że ustawiono model wątków w aplikacji, ustawiając atrybut [STAThread] w metodzie main() . W przeciwnym razie zarządzany wątek może znajdować się w unknown stanie lub umieścić go w MTA stanie , który powoduje konflikt z elementem UseShellExecutetrue. Niektóre metody wymagają, aby stan mieszkania nie był .unknown Jeśli stan nie zostanie jawnie ustawiony, gdy aplikacja napotka taką metodę, domyślnie zostanie MTAustawiona wartość , a po ustawieniu stanu mieszkania nie można zmienić. Jednak MTA powoduje zgłoszenie wyjątku, gdy powłoka systemu operacyjnego zarządza wątkiem.

Zobacz też

Dotyczy

Start(String, IEnumerable<String>)

Źródło:
Process.cs
Źródło:
Process.cs
Źródło:
Process.cs

Uruchamia zasób procesu, określając nazwę aplikacji i zestaw argumentów wiersza polecenia.

public:
 static System::Diagnostics::Process ^ Start(System::String ^ fileName, System::Collections::Generic::IEnumerable<System::String ^> ^ arguments);
public static System.Diagnostics.Process Start (string fileName, System.Collections.Generic.IEnumerable<string> arguments);
[System.Runtime.Versioning.UnsupportedOSPlatform("ios")]
[System.Runtime.Versioning.UnsupportedOSPlatform("tvos")]
public static System.Diagnostics.Process Start (string fileName, System.Collections.Generic.IEnumerable<string> arguments);
[System.Runtime.Versioning.UnsupportedOSPlatform("ios")]
[System.Runtime.Versioning.UnsupportedOSPlatform("tvos")]
[System.Runtime.Versioning.SupportedOSPlatform("maccatalyst")]
public static System.Diagnostics.Process Start (string fileName, System.Collections.Generic.IEnumerable<string> arguments);
static member Start : string * seq<string> -> System.Diagnostics.Process
[<System.Runtime.Versioning.UnsupportedOSPlatform("ios")>]
[<System.Runtime.Versioning.UnsupportedOSPlatform("tvos")>]
static member Start : string * seq<string> -> System.Diagnostics.Process
[<System.Runtime.Versioning.UnsupportedOSPlatform("ios")>]
[<System.Runtime.Versioning.UnsupportedOSPlatform("tvos")>]
[<System.Runtime.Versioning.SupportedOSPlatform("maccatalyst")>]
static member Start : string * seq<string> -> System.Diagnostics.Process
Public Shared Function Start (fileName As String, arguments As IEnumerable(Of String)) As Process

Parametry

fileName
String

Nazwa dokumentu lub pliku aplikacji do uruchomienia w procesie.

arguments
IEnumerable<String>

Argumenty wiersza polecenia do przekazania podczas uruchamiania procesu.

Zwraca

Nowa Process , która jest skojarzona z zasobem procesu lub null jeśli nie jest uruchomiony żaden zasób procesu.

Atrybuty

Uwagi

Każdy argument zostanie automatycznie uniknięty, jeśli jest to wymagane.

Ważne

Wywoływanie tej metody z niezaufanymi danymi jest zagrożeniem bezpieczeństwa. Wywołaj tę metodę tylko z zaufanymi danymi. Aby uzyskać więcej informacji, zobacz Validate All Inputs (Weryfikowanie wszystkich danych wejściowych).

Dotyczy