Process.Start Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
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ą userName
parametry , password
i 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ą userName
parametry , password
i 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 startInfo
FileName .
-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 null
jest .
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 startInfo
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".
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 null
wartość , 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
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 MTA
ustawiona 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).