Process.Start Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Spustí prostředek procesu a přidruží ho ke komponentě Process .
Přetížení
| Name | Description |
|---|---|
| Start(String, String, String, SecureString, String) |
Spustí prostředek procesu zadáním názvu aplikace, sady argumentů příkazového řádku, uživatelského jména, hesla a domény a přidružení prostředku k nové Process komponentě. |
| Start(String, String, SecureString, String) |
Spustí prostředek procesu zadáním názvu aplikace, uživatelského jména, hesla a domény a přidružením prostředku k nové Process komponentě. |
| Start(String, String) |
Spustí prostředek procesu zadáním názvu aplikace a sady argumentů příkazového řádku a přidruží prostředek k nové Process komponentě. |
| Start(String) |
Spustí prostředek procesu zadáním názvu dokumentu nebo souboru aplikace a přidruží prostředek k nové Process komponentě. |
| Start(ProcessStartInfo) |
Spustí prostředek procesu určený parametrem obsahujícím informace o spuštění procesu (například název souboru procesu, který se má spustit) a přidruží prostředek k nové Process komponentě. |
| Start() |
Spustí (nebo znovu použije) prostředek procesu určený StartInfo vlastností této Process komponenty a přidruží ho ke komponentě. |
| Start(String, IEnumerable<String>) |
Spustí prostředek procesu zadáním názvu aplikace a sady argumentů příkazového řádku. |
Start(String, String, String, SecureString, String)
- Zdroj:
- Process.Unix.cs
- Zdroj:
- Process.Unix.cs
- Zdroj:
- Process.Unix.cs
- Zdroj:
- Process.Unix.cs
- Zdroj:
- Process.Unix.cs
Důležité
Toto rozhraní API neodpovídá specifikaci CLS.
Spustí prostředek procesu zadáním názvu aplikace, sady argumentů příkazového řádku, uživatelského jména, hesla a domény a přidružení prostředku k nové Process komponentě.
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
Název souboru aplikace, který se má spustit v procesu.
- arguments
- String
Argumenty příkazového řádku, které se mají předat při spuštění procesu.
- userName
- String
Uživatelské jméno, které se má použít při spuštění procesu.
- password
- SecureString
A SecureString obsahující heslo, které se má použít při spuštění procesu.
- domain
- String
Doména, která se má použít při spuštění procesu.
Návraty
Nový Process , který je přidružený k prostředku procesu nebo null pokud není spuštěn žádný prostředek procesu. Všimněte si, že nový proces, který se spustil společně s již spuštěnými instancemi stejného procesu, bude nezávislý na ostatních. Kromě toho start může vrátit non-null Proces s jeho HasExited vlastnost již nastavena na true. V tomto případě mohl spuštěný proces aktivovat existující instanci samotné a poté se ukončil.
- Atributy
Výjimky
Nebyl zadán žádný název souboru.
Při otevírání přidruženého souboru došlo k chybě.
nebo
Soubor zadaný v fileName souboru nebyl nalezen.
nebo
Součet délky argumentů a délky celé cesty k přidruženému souboru přesahuje 2080. Chybová zpráva přidružená k této výjimce může být jedna z následujících možností: Datová oblast předaná systémovému volání je příliš malá nebo Přístup byl odepřen.
Objekt procesu již byl uvolněn.
Tento člen není podporován v Linuxu nebo macOS (jenom .NET Core).
Poznámky
Toto přetížení použijte k vytvoření nového procesu a primárního vlákna zadáním názvu souboru, argumentů příkazového řádku, uživatelského jména, hesla a domény. Nový proces pak spustí zadaný spustitelný soubor v kontextu zabezpečení zadaných přihlašovacích údajů (uživatel, doména a heslo).
Důležité
Volání této metody s nedůvěryhodnými daty představuje bezpečnostní riziko. Volejte tuto metodu pouze s důvěryhodnými daty. Další informace naleznete v tématu Ověření všech vstupů.
Poznámka:
Pokud je spustitelný soubor umístěný na vzdálené jednotce, musíte sdílenou síťovou složku identifikovat pomocí identifikátoru URI (Uniform Resource Identifier), nikoli písmena propojené jednotky.
Poznámka:
Pokud je adresa spustitelného souboru adresa URL, proces se nespustí a null vrátí se.
Toto přetížení umožňuje spustit proces bez prvního vytvoření nové Process instance. Přetížení je alternativou k explicitním krokům vytvoření nové Process instance, nastavení FileName, Arguments, PasswordUserName, a Domain vlastnosti StartInfo vlastnosti vlastnosti a volání Start instanceProcess.
Podobně, stejně jako dialogové okno Spustit může přijmout spustitelný soubor s příponou .exe nebo bez přípony, je přípona .exe v parametru fileName volitelná. Parametr můžete například nastavit fileName na "Notepad.exe" nebo "Poznámkový blok".
fileName Pokud parametr představuje spustitelný soubor, může parametr představovat soubor, arguments na který se má jednat, například textový soubor v Notepad.exe myfile.txt.
Poznámka:
Název souboru musí představovat spustitelný soubor v Start přetížení, které mají userName, passworda domain parametry.
Kdykoli použijete Start ke spuštění procesu, možná ho budete muset zavřít nebo riskujete ztrátu systémových prostředků. Ukončete procesy pomocí CloseMainWindow nebo Kill. Pomocí vlastnosti HasExited můžete zkontrolovat, jestli už byl proces uzavřen.
Platí pro
Start(String, String, SecureString, String)
- Zdroj:
- Process.Unix.cs
- Zdroj:
- Process.Unix.cs
- Zdroj:
- Process.Unix.cs
- Zdroj:
- Process.Unix.cs
- Zdroj:
- Process.Unix.cs
Důležité
Toto rozhraní API neodpovídá specifikaci CLS.
Spustí prostředek procesu zadáním názvu aplikace, uživatelského jména, hesla a domény a přidružením prostředku k nové Process komponentě.
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
Název souboru aplikace, který se má spustit v procesu.
- userName
- String
Uživatelské jméno, které se má použít při spuštění procesu.
- password
- SecureString
A SecureString obsahující heslo, které se má použít při spuštění procesu.
- domain
- String
Doména, která se má použít při spuštění procesu.
Návraty
Nový Process , který je přidružený k prostředku procesu nebo null pokud není spuštěn žádný prostředek procesu. Všimněte si, že nový proces, který se spustil společně s již spuštěnými instancemi stejného procesu, bude nezávislý na ostatních. Kromě toho start může vrátit non-null Proces s jeho HasExited vlastnost již nastavena na true. V tomto případě mohl spuštěný proces aktivovat existující instanci samotné a poté se ukončil.
- Atributy
Výjimky
Nebyl zadán žádný název souboru.
Při otevírání přidruženého souboru došlo k chybě.
nebo
Soubor zadaný v fileName souboru nebyl nalezen.
Objekt procesu již byl uvolněn.
Tento člen není podporován v Linuxu nebo macOS (jenom .NET Core).
Příklady
Následující příklad kódu ukazuje použití tohoto přetížení ke spuštění spustitelného souboru a také ukazuje vyvolání Win32Exception při pokusu o spuštění aplikace asociované s nonexecutable soubor.
// 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();
}
}
}
// NOTE: This example requires a text.txt file file in your Documents folder
open System
open System.Diagnostics
open System.Security
open System.ComponentModel
printf "Enter your domain: "
let domain = stdin.ReadLine()
printf "Enter you user name: "
let uname = stdin.ReadLine()
printf "Enter your password: "
let password = new SecureString()
let mutable key = Console.ReadKey(true)
while key.Key <> ConsoleKey.Enter do
// Ignore any key out of range.
if int key.Key >= 33 && int key.Key <= 90 && key.Key <> ConsoleKey.Enter then
// Append the character to the password.
password.AppendChar key.KeyChar
Console.Write "*"
key <- Console.ReadKey(true)
printfn ""
try
printfn "\nTrying to launch NotePad using your login information..."
Process.Start("notepad.exe", uname, password, domain) |> ignore
with :? Win32Exception as ex ->
printfn $"{ex.Message}"
let path = Environment.GetFolderPath Environment.SpecialFolder.MyDocuments + @"\"
try
// The following call to Start succeeds if test.txt exists.
printfn "\nTrying to launch 'text.txt'..."
Process.Start $"{path}text.txt" |> ignore
with :? Win32Exception as ex ->
printfn $"{ex.Message}"
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.
printfn "\nTrying to launch 'text.txt' with your login information..."
Process.Start($"{path}text.txt", uname, password, domain) |> ignore
with :? Win32Exception as ex ->
printfn $"{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
Poznámky
Toto přetížení použijte k vytvoření nového procesu a primárního vlákna zadáním názvu souboru, uživatelského jména, hesla a domény. Nový proces pak spustí zadaný spustitelný soubor v kontextu zabezpečení zadaných přihlašovacích údajů (uživatel, doména a heslo).
Důležité
Volání této metody s nedůvěryhodnými daty představuje bezpečnostní riziko. Volejte tuto metodu pouze s důvěryhodnými daty. Další informace naleznete v tématu Ověření všech vstupů.
Poznámka:
Pokud je spustitelný soubor umístěný na vzdálené jednotce, musíte sdílenou síťovou složku identifikovat pomocí identifikátoru URI (Uniform Resource Identifier), nikoli písmena propojené jednotky.
Poznámka:
Pokud je adresa spustitelného souboru adresa URL, proces se nespustí a null vrátí se.
Toto přetížení umožňuje spustit proces bez prvního vytvoření nové Process instance. Přetížení je alternativou k explicitním krokům vytvoření nové Process instance, nastavení FileName, PasswordUserName, a Domain vlastnosti StartInfo vlastnosti vlastnosti a volání Start instanceProcess.
Podobně, stejně jako dialogové okno Spustit může přijmout spustitelný soubor s příponou .exe nebo bez přípony, je přípona .exe v parametru fileName volitelná. Parametr můžete například nastavit fileName na "Notepad.exe" nebo "Poznámkový blok".
fileName Pokud parametr představuje spustitelný soubor, může parametr představovat soubor, arguments na který se má jednat, například textový soubor v Notepad.exe myfile.txt.
Poznámka:
Název souboru musí představovat spustitelný soubor v Start přetížení, které mají userName, passworda domain parametry.
Kdykoli použijete Start ke spuštění procesu, možná ho budete muset zavřít nebo riskujete ztrátu systémových prostředků. Ukončete procesy pomocí CloseMainWindow nebo Kill. Pomocí vlastnosti HasExited můžete zkontrolovat, jestli už byl proces uzavřen.
Platí pro
Start(String, String)
- Zdroj:
- Process.cs
- Zdroj:
- Process.cs
- Zdroj:
- Process.cs
- Zdroj:
- Process.cs
- Zdroj:
- Process.cs
Spustí prostředek procesu zadáním názvu aplikace a sady argumentů příkazového řádku a přidruží prostředek k nové Process komponentě.
public:
static System::Diagnostics::Process ^ Start(System::String ^ fileName, System::String ^ arguments);
[System.Runtime.Versioning.SupportedOSPlatform("maccatalyst")]
[System.Runtime.Versioning.UnsupportedOSPlatform("ios")]
[System.Runtime.Versioning.UnsupportedOSPlatform("tvos")]
public static System.Diagnostics.Process Start(string fileName, 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.SupportedOSPlatform("maccatalyst")>]
[<System.Runtime.Versioning.UnsupportedOSPlatform("ios")>]
[<System.Runtime.Versioning.UnsupportedOSPlatform("tvos")>]
static member Start : string * string -> System.Diagnostics.Process
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
Public Shared Function Start (fileName As String, arguments As String) As Process
Parametry
- fileName
- String
Název souboru aplikace, který se má spustit v procesu.
- arguments
- String
Argumenty příkazového řádku, které se mají předat při spuštění procesu.
Návraty
Nový Process , který je přidružený k prostředku procesu nebo null pokud není spuštěn žádný prostředek procesu. Všimněte si, že nový proces, který se spustil společně s již spuštěnými instancemi stejného procesu, bude nezávislý na ostatních. Kromě toho start může vrátit non-null Proces s jeho HasExited vlastnost již nastavena na true. V tomto případě mohl spuštěný proces aktivovat existující instanci samotné a poté se ukončil.
- Atributy
Výjimky
Parametr fileName je argumentsnull.
Při otevírání přidruženého souboru došlo k chybě.
nebo
Soubor zadaný v fileName souboru nebyl nalezen.
nebo
Součet délky argumentů a délky celé cesty k procesu překračuje 2080. Chybová zpráva přidružená k této výjimce může být jedna z následujících možností: Datová oblast předaná systémovému volání je příliš malá nebo Přístup byl odepřen.
Objekt procesu již byl uvolněn.
Proměnná prostředí PATH obsahuje řetězec obsahující uvozovky.
Příklady
Následující příklad nejprve vytvoří instanci Aplikace Internet Explorer a zobrazí obsah složky Oblíbené v prohlížeči. Potom spustí některé další instance Internet Exploreru a zobrazí některé konkrétní stránky nebo weby. Nakonec spustí Internet Explorer s minimalizovaným oknem při přechodu na konkrétní web.
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();
}
}
}
module processstartstatic
open System
open System.Diagnostics
// Opens the Internet Explorer application.
let openApplication (myFavoritesPath: string) =
// Start Internet Explorer. Defaults to the home page.
Process.Start "IExplore.exe" |> ignore
// Display the contents of the favorites folder in the browser.
Process.Start myFavoritesPath |> ignore
// Opens urls and .html documents using Internet Explorer.
let openWithArguments () =
// url's are not considered documents. They can only be opened
// by passing them as arguments.
Process.Start("IExplore.exe", "www.northwindtraders.com") |> ignore
// Start a Web page using a browser associated with .html and .asp files.
Process.Start("IExplore.exe", @"C:\myPath\myFile.htm") |> ignore
Process.Start("IExplore.exe", @"C:\myPath\myFile.asp") |> ignore
// Uses the ProcessStartInfo class to start new processes,
// both in a minimized mode.
let openWithStartInfo () =
let startInfo = ProcessStartInfo "IExplore.exe"
startInfo.WindowStyle <- ProcessWindowStyle.Minimized
Process.Start startInfo |> ignore
startInfo.Arguments <- "www.northwindtraders.com"
Process.Start startInfo |> ignore
// Get the path that stores favorite links.
let myFavoritesPath = Environment.GetFolderPath Environment.SpecialFolder.Favorites
openApplication myFavoritesPath
openWithArguments ()
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
Poznámky
Toto přetížení použijte ke spuštění prostředku procesu zadáním názvu souboru a argumentů příkazového řádku. Přetížení přidruží prostředek k novému Process objektu.
Důležité
Volání této metody s nedůvěryhodnými daty představuje bezpečnostní riziko. Volejte tuto metodu pouze s důvěryhodnými daty. Další informace naleznete v tématu Ověření všech vstupů.
Poznámka:
Pokud je adresa spustitelného souboru adresa URL, proces se nespustí a null vrátí se.
Toto přetížení umožňuje spustit proces bez prvního vytvoření nové Process instance. Přetížení je alternativou k explicitním krokům vytvoření nové Process instance, nastavení FileName a Arguments členů StartInfo vlastnosti a volání Start instance Process .
Zahájení procesu zadáním názvu souboru a argumentů je podobné zadání názvu souboru a argumentů příkazového řádku v Run dialogovém okně nabídky Windows Start . Proto název souboru nemusí představovat spustitelný soubor. Může to být jakýkoli typ souboru, pro který byla přípona přidružena k aplikaci nainstalované v systému. Název souboru může mít například příponu .txt, pokud máte přidružené textové soubory k editoru, například Poznámkový blok, nebo může mít .doc, pokud jste přidružovali .doc soubory s nástrojem pro zpracování textu, jako je například Microsoft Word. Podobně, stejně jako Run dialogové okno může přijmout spustitelný soubor s příponou .exe nebo bez přípony, je přípona .exe v parametru fileName volitelná. Parametr můžete například nastavit fileName na "Notepad.exe" nebo "Poznámkový blok".
fileName Pokud parametr představuje spustitelný soubor, může parametr představovat soubor, arguments na který se má jednat, například textový soubor v Notepad.exe myfile.txt.
fileName Pokud parametr představuje soubor příkazu (.cmd), musí parametr obsahovat buď argument "/c" nebo "/k", arguments aby bylo možné určit, jestli příkazové okno ukončí nebo zůstane po dokončení.
Na rozdíl od ostatních přetížení není přetížení Start , které nemá žádné parametry, členem static . Toto přetížení použijte, pokud jste již vytvořili Process instanci a zadali počáteční informace (včetně názvu souboru) a chcete spustit prostředek procesu a přidružit ho k existující Process instanci. Použijte jedno z static přetížení, pokud chcete vytvořit novou Process komponentu namísto spuštění procesu pro existující komponentu. Toto přetížení i přetížení, které nemá žádné parametry, umožňují zadat název souboru prostředku procesu pro spuštění a předání argumentů příkazového řádku.
Pokud máte v systému deklarovanou proměnnou cesty pomocí uvozovek, musíte tuto cestu při spuštění jakéhokoli procesu nalezeného v tomto umístění plně kvalifikovat. Jinak systém nenajde cestu. Pokud c:\mypath například cesta není a přidáte ji pomocí uvozovek, path = %path%;"c:\mypath"musíte při jejím spuštění plně kvalifikovat jakýkoli proces c:\mypath .
Poznámka:
ASP.NET webové stránky a kódu řízení serveru se spouští v kontextu pracovního procesu ASP.NET na webovém serveru. Pokud použijete metodu Start v ASP.NET webové stránce nebo ovládacím prvku serveru, nový proces se spustí na webovém serveru s omezenými oprávněními. Proces se nespustí ve stejném kontextu jako klientský prohlížeč a nemá přístup k uživatelské ploše.
Kdykoli použijete Start ke spuštění procesu, možná ho budete muset zavřít nebo riskujete ztrátu systémových prostředků. Ukončete procesy pomocí CloseMainWindow nebo Kill. Pomocí vlastnosti HasExited můžete zkontrolovat, jestli už byl proces uzavřen.
Tady je potřeba poznámka o stavech bytu ve spravovaných vláknech. Pokud UseShellExecute je true součástí procesu vlastnost StartInfo , ujistěte se, že jste v aplikaci nastavili model threadingu nastavením atributu [STAThread] metody main() . V opačném případě může být spravované vlákno ve unknown stavu nebo ve MTA stavu, z nichž druhý je v konfliktu s UseShellExecute tím, trueže . Některé metody vyžadují, aby stav bytu nebyl unknown. Pokud stav není explicitně nastaven, když aplikace narazí na takovou metodu, výchozí hodnota MTAje a jakmile je nastavena, stav apartmánu nelze změnit. Způsobí však výjimku, MTA když prostředí operačního systému spravuje vlákno.
Viz také
Platí pro
Start(String)
- Zdroj:
- Process.cs
- Zdroj:
- Process.cs
- Zdroj:
- Process.cs
- Zdroj:
- Process.cs
- Zdroj:
- Process.cs
Spustí prostředek procesu zadáním názvu dokumentu nebo souboru aplikace a přidruží prostředek k nové Process komponentě.
public:
static System::Diagnostics::Process ^ Start(System::String ^ fileName);
[System.Runtime.Versioning.SupportedOSPlatform("maccatalyst")]
[System.Runtime.Versioning.UnsupportedOSPlatform("ios")]
[System.Runtime.Versioning.UnsupportedOSPlatform("tvos")]
public static System.Diagnostics.Process Start(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.SupportedOSPlatform("maccatalyst")>]
[<System.Runtime.Versioning.UnsupportedOSPlatform("ios")>]
[<System.Runtime.Versioning.UnsupportedOSPlatform("tvos")>]
static member Start : string -> System.Diagnostics.Process
static member Start : string -> System.Diagnostics.Process
[<System.Runtime.Versioning.UnsupportedOSPlatform("ios")>]
[<System.Runtime.Versioning.UnsupportedOSPlatform("tvos")>]
static member Start : string -> System.Diagnostics.Process
Public Shared Function Start (fileName As String) As Process
Parametry
- fileName
- String
Název souboru dokumentu nebo aplikace, který se má spustit v procesu.
Návraty
Nový Process , který je přidružený k prostředku procesu nebo null pokud není spuštěn žádný prostředek procesu. Všimněte si, že nový proces, který se spustil společně s již spuštěnými instancemi stejného procesu, bude nezávislý na ostatních. Kromě toho start může vrátit non-null Proces s jeho HasExited vlastnost již nastavena na true. V tomto případě mohl spuštěný proces aktivovat existující instanci samotné a poté se ukončil.
- Atributy
Výjimky
Při otevírání přidruženého souboru došlo k chybě.
nebo
Soubor zadaný v fileName souboru nebyl nalezen.
Objekt procesu již byl uvolněn.
Proměnná prostředí PATH obsahuje řetězec obsahující uvozovky.
Příklady
Následující příklad nejprve vytvoří instanci Aplikace Internet Explorer a zobrazí obsah složky Oblíbené v prohlížeči. Potom spustí některé další instance Internet Exploreru a zobrazí některé konkrétní stránky nebo weby. Nakonec spustí Internet Explorer s minimalizovaným oknem při přechodu na konkrétní web.
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();
}
}
}
module processstartstatic
open System
open System.Diagnostics
// Opens the Internet Explorer application.
let openApplication (myFavoritesPath: string) =
// Start Internet Explorer. Defaults to the home page.
Process.Start "IExplore.exe" |> ignore
// Display the contents of the favorites folder in the browser.
Process.Start myFavoritesPath |> ignore
// Opens urls and .html documents using Internet Explorer.
let openWithArguments () =
// url's are not considered documents. They can only be opened
// by passing them as arguments.
Process.Start("IExplore.exe", "www.northwindtraders.com") |> ignore
// Start a Web page using a browser associated with .html and .asp files.
Process.Start("IExplore.exe", @"C:\myPath\myFile.htm") |> ignore
Process.Start("IExplore.exe", @"C:\myPath\myFile.asp") |> ignore
// Uses the ProcessStartInfo class to start new processes,
// both in a minimized mode.
let openWithStartInfo () =
let startInfo = ProcessStartInfo "IExplore.exe"
startInfo.WindowStyle <- ProcessWindowStyle.Minimized
Process.Start startInfo |> ignore
startInfo.Arguments <- "www.northwindtraders.com"
Process.Start startInfo |> ignore
// Get the path that stores favorite links.
let myFavoritesPath = Environment.GetFolderPath Environment.SpecialFolder.Favorites
openApplication myFavoritesPath
openWithArguments ()
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
Poznámky
Toto přetížení použijte ke spuštění prostředku procesu zadáním názvu souboru. Přetížení přidruží prostředek k novému Process objektu.
Důležité
Volání této metody s nedůvěryhodnými daty představuje bezpečnostní riziko. Volejte tuto metodu pouze s důvěryhodnými daty. Další informace naleznete v tématu Ověření všech vstupů.
Poznámka:
Pokud je adresa spustitelného souboru adresa URL, proces se nespustí a null vrátí se.
Toto přetížení umožňuje spustit proces bez prvního vytvoření nové Process instance. Přetížení je alternativou k explicitním krokům vytvoření nové Process instance, nastavení FileName člena StartInfo vlastnosti a volání Start instance Process .
Aplikaci ClickOnce můžete spustit nastavením parametru fileName na umístění (například webovou adresu), ze které jste původně aplikaci nainstalovali. Nespustíte aplikaci ClickOnce zadáním jeho nainstalovaného umístění na pevném disku.
Zahájení procesu zadáním názvu souboru je podobné zadání informací v Run dialogovém okně nabídky Windows Start . Proto název souboru nemusí představovat spustitelný soubor. Může to být jakýkoli typ souboru, pro který byla přípona přidružena k aplikaci nainstalované v systému. Název souboru může mít například příponu .txt, pokud máte přidružené textové soubory k editoru, například Poznámkový blok, nebo může mít .doc, pokud jste přidružovali .doc soubory s nástrojem pro zpracování textu, jako je například Microsoft Word. Podobně, stejně jako Run dialogové okno může přijmout spustitelný soubor s příponou .exe nebo bez přípony, je přípona .exe v parametru fileName volitelná. Parametr můžete například nastavit fileName na "Notepad.exe" nebo "Poznámkový blok".
Toto přetížení neumožňuje pro proces argumenty příkazového řádku. Pokud potřebujete zadat jeden nebo více argumentů příkazového řádku pro proces, použijte Process.Start(ProcessStartInfo) nebo Process.Start(String, String) přetížení.
Na rozdíl od ostatních přetížení není přetížení Start , které nemá žádné parametry, členem static . Toto přetížení použijte, pokud jste již vytvořili Process instanci a zadali počáteční informace (včetně názvu souboru) a chcete spustit prostředek procesu a přidružit ho k existující Process instanci. Použijte jedno z static přetížení, pokud chcete vytvořit novou Process komponentu namísto spuštění procesu pro existující komponentu. Toto přetížení i přetížení, které nemá žádné parametry, umožňují zadat název souboru prostředku procesu, který se má spustit.
Pokud máte v systému deklarovanou proměnnou cesty pomocí uvozovek, musíte tuto cestu při spuštění jakéhokoli procesu nalezeného v tomto umístění plně kvalifikovat. Jinak systém nenajde cestu. Pokud c:\mypath například cesta není a přidáte ji pomocí uvozovek, path = %path%;"c:\mypath"musíte při jejím spuštění plně kvalifikovat jakýkoli proces c:\mypath .
Poznámka:
ASP.NET webové stránky a kódu řízení serveru se spouští v kontextu pracovního procesu ASP.NET na webovém serveru. Pokud použijete metodu Start v ASP.NET webové stránce nebo ovládacím prvku serveru, nový proces se spustí na webovém serveru s omezenými oprávněními. Proces se nespustí ve stejném kontextu jako klientský prohlížeč a nemá přístup k uživatelské ploše.
Kdykoli použijete Start ke spuštění procesu, možná ho budete muset zavřít nebo riskujete ztrátu systémových prostředků. Ukončete procesy pomocí CloseMainWindow nebo Kill. Pomocí vlastnosti HasExited můžete zkontrolovat, jestli už byl proces uzavřen.
Tady je potřeba poznámka o stavech bytu ve spravovaných vláknech. Pokud UseShellExecute je true součástí procesu vlastnost StartInfo , ujistěte se, že jste v aplikaci nastavili model threadingu nastavením atributu [STAThread] metody main() . V opačném případě může být spravované vlákno ve unknown stavu nebo ve MTA stavu, z nichž druhý je v konfliktu s UseShellExecute tím, trueže . Některé metody vyžadují, aby stav bytu nebyl unknown. Pokud stav není explicitně nastaven, když aplikace narazí na takovou metodu, výchozí hodnota MTAje a jakmile je nastavena, stav apartmánu nelze změnit. Způsobí však výjimku, MTA když prostředí operačního systému spravuje vlákno.
Viz také
Platí pro
Start(ProcessStartInfo)
- Zdroj:
- Process.cs
- Zdroj:
- Process.cs
- Zdroj:
- Process.cs
- Zdroj:
- Process.cs
- Zdroj:
- Process.cs
Spustí prostředek procesu určený parametrem obsahujícím informace o spuštění procesu (například název souboru procesu, který se má spustit) a přidruží prostředek k nové Process komponentě.
public:
static System::Diagnostics::Process ^ Start(System::Diagnostics::ProcessStartInfo ^ startInfo);
[System.Runtime.Versioning.SupportedOSPlatform("maccatalyst")]
[System.Runtime.Versioning.UnsupportedOSPlatform("ios")]
[System.Runtime.Versioning.UnsupportedOSPlatform("tvos")]
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);
public static System.Diagnostics.Process Start(System.Diagnostics.ProcessStartInfo startInfo);
[<System.Runtime.Versioning.SupportedOSPlatform("maccatalyst")>]
[<System.Runtime.Versioning.UnsupportedOSPlatform("ios")>]
[<System.Runtime.Versioning.UnsupportedOSPlatform("tvos")>]
static member Start : System.Diagnostics.ProcessStartInfo -> System.Diagnostics.Process
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
Public Shared Function Start (startInfo As ProcessStartInfo) As Process
Parametry
- startInfo
- ProcessStartInfo
Obsahuje ProcessStartInfo informace, které se používají ke spuštění procesu, včetně názvu souboru a všech argumentů příkazového řádku.
Návraty
Nový Process , který je přidružený k prostředku procesu nebo null pokud není spuštěn žádný prostředek procesu. Všimněte si, že nový proces, který se spustil společně s již spuštěnými instancemi stejného procesu, bude nezávislý na ostatních. Kromě toho start může vrátit non-null Proces s jeho HasExited vlastnost již nastavena na true. V tomto případě mohl spuštěný proces aktivovat existující instanci samotné a poté se ukončil.
- Atributy
Výjimky
Ve vlastnosti parametru startInfoFileName nebyl zadán žádný název souboru.
nebo
Vlastnost UseShellExecute parametru RedirectStandardOutputstartInfoRedirectStandardInputje true a , nebo RedirectStandardError vlastnost je také .true
nebo
Vlastnost parametru startInfo je true a UserName vlastnost není nebo není null prázdná nebo Password vlastnost není null.UseShellExecute
Parametr startInfo je null.
Objekt procesu již byl uvolněn.
Při otevírání přidruženého souboru došlo k chybě.
nebo
Soubor zadaný ve vlastnosti parametru startInfoFileName nebyl nalezen.
nebo
Součet délky argumentů a délky celé cesty k procesu překračuje 2080. Chybová zpráva přidružená k této výjimce může být jedna z následujících možností: Datová oblast předaná systémovému volání je příliš malá nebo Přístup byl odepřen.
Metoda není podporována v operačních systémech bez podpory prostředí, jako je Nano Server (pouze .NET Core).
Příklady
Následující příklad nejprve vytvoří instanci Aplikace Internet Explorer a zobrazí obsah složky Oblíbené v prohlížeči. Potom spustí některé další instance Internet Exploreru a zobrazí některé konkrétní stránky nebo weby. Nakonec spustí Internet Explorer s minimalizovaným oknem při přechodu na konkrétní web.
Další příklady jiných použití této metody naleznete v jednotlivých vlastnostech ProcessStartInfo třídy.
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();
}
}
}
module processstartstatic
open System
open System.Diagnostics
// Opens the Internet Explorer application.
let openApplication (myFavoritesPath: string) =
// Start Internet Explorer. Defaults to the home page.
Process.Start "IExplore.exe" |> ignore
// Display the contents of the favorites folder in the browser.
Process.Start myFavoritesPath |> ignore
// Opens urls and .html documents using Internet Explorer.
let openWithArguments () =
// url's are not considered documents. They can only be opened
// by passing them as arguments.
Process.Start("IExplore.exe", "www.northwindtraders.com") |> ignore
// Start a Web page using a browser associated with .html and .asp files.
Process.Start("IExplore.exe", @"C:\myPath\myFile.htm") |> ignore
Process.Start("IExplore.exe", @"C:\myPath\myFile.asp") |> ignore
// Uses the ProcessStartInfo class to start new processes,
// both in a minimized mode.
let openWithStartInfo () =
let startInfo = ProcessStartInfo "IExplore.exe"
startInfo.WindowStyle <- ProcessWindowStyle.Minimized
Process.Start startInfo |> ignore
startInfo.Arguments <- "www.northwindtraders.com"
Process.Start startInfo |> ignore
// Get the path that stores favorite links.
let myFavoritesPath = Environment.GetFolderPath Environment.SpecialFolder.Favorites
openApplication myFavoritesPath
openWithArguments ()
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
Poznámky
Toto přetížení použijte ke spuštění prostředku procesu zadáním ProcessStartInfo instance. Přetížení přidruží prostředek k novému Process objektu.
Důležité
Volání této metody s nedůvěryhodnými daty představuje bezpečnostní riziko. Volejte tuto metodu pouze s důvěryhodnými daty. Další informace naleznete v tématu Ověření všech vstupů.
Poznámka:
Pokud je adresa spustitelného souboru adresa URL, proces se nespustí a null vrátí se.
Toto přetížení umožňuje spustit proces bez prvního vytvoření nové Process instance. Použití tohoto přetížení s parametrem ProcessStartInfo je alternativou k explicitním krokům vytvoření nové Process instance, nastavení jeho StartInfo vlastností a volání Start instance Process .
ProcessStartInfo Použití instance jako parametru umožňuje volat Start s největší kontrolou nad tím, co se předává do volání, aby se spustil proces. Pokud potřebujete předat pouze název souboru nebo název souboru a argumenty, není nutné vytvořit novou ProcessStartInfo instanci, i když je to možnost. Jedinou Process.StartInfo vlastností, která musí být nastavena FileName , je vlastnost. Vlastnost FileName nemusí představovat spustitelný soubor. Může to být jakýkoli typ souboru, pro který byla přípona přidružena k aplikaci, která je nainstalována v systému. Vlastnost může mít například FileName příponu .txt, pokud máte přidružené textové soubory s editorem, například Poznámkový blok, nebo může mít příponu .doc, pokud jste přidružovali .doc soubory s nástrojem pro zpracování textu, jako je například Microsoft Word.
Aplikaci ClickOnce můžete spustit zadáním umístění (například webové adresy), ze které jste původně aplikaci nainstalovali. Nespustíte aplikaci ClickOnce zadáním jeho nainstalovaného umístění na pevném disku.
Pokud jsou nastaveny ProcessStartInfo.UserName a ProcessStartInfo.Password vlastnosti StartInfo instance, je volána nespravovaná CreateProcessWithLogonW funkce, která spustí proces v novém okně i v případě ProcessStartInfo.CreateNoWindow , že je true hodnota vlastnosti nebo ProcessStartInfo.WindowStyle hodnota vlastnosti je ProcessWindowStyle.Hidden.
ProcessStartInfo.Domain Pokud je nullvlastnost , ProcessStartInfo.UserName vlastnost musí být ve formátu UPN, uživatel@DNS_domain_name.
Na rozdíl od ostatních přetížení není přetížení Start , které nemá žádné parametry, členem static . Toto přetížení použijte, pokud jste již vytvořili Process instanci a zadali počáteční informace (včetně názvu souboru) a chcete spustit prostředek procesu a přidružit ho k existující Process instanci. Použijte jedno z static přetížení, pokud chcete vytvořit novou Process komponentu namísto spuštění procesu pro existující komponentu. Toto přetížení i přetížení, které nemá žádné parametry, umožňují určit počáteční informace pro prostředek procesu pomocí ProcessStartInfo instance.
Pokud máte v systému deklarovanou proměnnou cesty pomocí uvozovek, musíte tuto cestu při spuštění jakéhokoli procesu nalezeného v tomto umístění plně kvalifikovat. Jinak systém nenajde cestu. Pokud c:\mypath například cesta není a přidáte ji pomocí uvozovek, path = %path%;"c:\mypath"musíte při jejím spuštění plně kvalifikovat jakýkoli proces c:\mypath .
Poznámka:
ASP.NET webové stránky a kódu řízení serveru se spouští v kontextu pracovního procesu ASP.NET na webovém serveru. Pokud použijete metodu Start v ASP.NET webové stránce nebo ovládacím prvku serveru, nový proces se spustí na webovém serveru s omezenými oprávněními. Proces se nespustí ve stejném kontextu jako klientský prohlížeč a nemá přístup k uživatelské ploše.
Kdykoli použijete Start ke spuštění procesu, možná ho budete muset zavřít nebo riskujete ztrátu systémových prostředků. Ukončete procesy pomocí CloseMainWindow nebo Kill. Pomocí vlastnosti HasExited můžete zkontrolovat, jestli už byl proces uzavřen.
Tady je potřeba poznámka o stavech bytu ve spravovaných vláknech. Pokud UseShellExecute je true parametr startInfo , ujistěte se, že jste v aplikaci nastavili model threadingu nastavením atributu [STAThread] metody main() . V opačném případě může být spravované vlákno ve unknown stavu nebo ve MTA stavu, z nichž druhý je v konfliktu s UseShellExecute tím, trueže . Některé metody vyžadují, aby stav bytu nebyl unknown. Pokud stav není explicitně nastaven, když aplikace narazí na takovou metodu, výchozí hodnota MTAje a jakmile je nastavena, stav apartmánu nelze změnit. Způsobí však výjimku, MTA když prostředí operačního systému spravuje vlákno.
Viz také
Platí pro
Start()
- Zdroj:
- Process.cs
- Zdroj:
- Process.cs
- Zdroj:
- Process.cs
- Zdroj:
- Process.cs
- Zdroj:
- Process.cs
public:
bool Start();
[System.Runtime.Versioning.SupportedOSPlatform("maccatalyst")]
[System.Runtime.Versioning.UnsupportedOSPlatform("ios")]
[System.Runtime.Versioning.UnsupportedOSPlatform("tvos")]
public bool Start();
public bool Start();
[System.Runtime.Versioning.UnsupportedOSPlatform("ios")]
[System.Runtime.Versioning.UnsupportedOSPlatform("tvos")]
public bool Start();
[<System.Runtime.Versioning.SupportedOSPlatform("maccatalyst")>]
[<System.Runtime.Versioning.UnsupportedOSPlatform("ios")>]
[<System.Runtime.Versioning.UnsupportedOSPlatform("tvos")>]
member this.Start : unit -> bool
member this.Start : unit -> bool
[<System.Runtime.Versioning.UnsupportedOSPlatform("ios")>]
[<System.Runtime.Versioning.UnsupportedOSPlatform("tvos")>]
member this.Start : unit -> bool
Public Function Start () As Boolean
Návraty
true pokud je spuštěn procesový prostředek; false pokud není spuštěn žádný nový prostředek procesu (například pokud je znovu použit existující proces).
- Atributy
Výjimky
V komponentě ProcessStartInfonebyl zadán žádný název souboru .
nebo
StartInfo Člen UseShellExecute vlastnosti je true zatímco RedirectStandardInput, RedirectStandardOutputnebo RedirectStandardError je true.
Při otevírání přidruženého souboru došlo k chybě.
Objekt procesu již byl uvolněn.
Metoda není podporována v operačních systémech bez podpory prostředí, jako je Nano Server (pouze .NET Core).
Příklady
Následující příklad používá instanci Process třídy ke spuštění procesu.
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);
}
}
}
}
open System.Diagnostics
try
use 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() |> ignore
// 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.
with e ->
printfn $"{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
Poznámky
Pomocí tohoto přetížení spusťte prostředek procesu a přidružte ho k aktuální Process komponentě. Vrácená hodnota true označuje, že byl spuštěn nový prostředek procesu. Pokud je prostředek procesu určený FileName členem StartInfo vlastnosti již spuštěn v počítači, není spuštěn žádný další prostředek procesu. Místo toho se spuštěný prostředek procesu znovu použije a false vrátí se.
Aplikaci ClickOnce můžete spustit zadáním umístění (například webové adresy), ze které jste původně aplikaci nainstalovali. Nespustíte aplikaci ClickOnce zadáním jeho nainstalovaného umístění na pevném disku.
Důležité
Použití instance tohoto typu s nedůvěryhodnými daty představuje bezpečnostní riziko. Tento objekt použijte pouze s důvěryhodnými daty. Další informace naleznete v tématu Ověření všech vstupů.
Poznámka:
Pokud používáte Visual Studio, toto přetížení Start metody je to, které vložíte do kódu po přetažení Process komponenty do návrháře.
Properties Pomocí okna rozbalte StartInfo kategorii a napište do vlastnosti příslušnou hodnotuFileName. Změny se zobrazí v postupu formuláře InitializeComponent .
Toto přetížení Start není static metoda. Musíte ho volat z instance Process třídy. Před voláním Startje nutné nejprve zadat StartInfo informace o vlastnosti pro tuto Process instanci, protože tyto informace slouží k určení prostředku procesu, který se má spustit.
Další přetížení Start metody jsou static členy. Před voláním těchto přetížení metody není nutné vytvořit instanci Process komponenty. Místo toho můžete volat StartProcess samotnou třídu a pokud byl proces spuštěn, vytvoří se nová Process komponenta. Nebo se vrátí, null pokud byl proces znovu použit. Prostředek procesu se automaticky přidružuje k nové Process komponentě, která je vrácena metodou Start .
Členy StartInfo lze použít k duplikování funkcí dialogového Run okna nabídky Windows Start . Cokoli, co lze zadat do příkazového řádku, lze spustit nastavením odpovídajících hodnot ve StartInfo vlastnosti. Jedinou StartInfo vlastností, která musí být nastavena FileName , je vlastnost. Vlastnost FileName nemusí být spustitelný soubor. Může to být jakýkoli typ souboru, pro který byla přípona přidružena k aplikaci, která je nainstalována v systému. Vlastnost může mít například FileName příponu .txt, pokud máte přidružené textové soubory s editorem, například Poznámkový blok, nebo může mít příponu .doc, pokud jste přidružovali .doc soubory s nástrojem pro zpracování textu, jako je například Microsoft Word.
Na příkazovém řádku můžete zadat akce, které se mají provést pro určité typy souborů. Můžete například tisknout dokumenty nebo upravovat textové soubory. Zadejte tyto akce pomocí Verb člena StartInfo vlastnosti. U jiných typů souborů můžete zadat argumenty příkazového řádku při spuštění souboru z dialogového Run okna. Pokud jako argument zadáte prohlížeč jako FileNameargument, můžete například předat adresu URL . Tyto argumenty lze zadat ve členu StartInfoArguments vlastnosti.
Pokud máte v systému deklarovanou proměnnou cesty pomocí uvozovek, musíte tuto cestu při spuštění jakéhokoli procesu nalezeného v tomto umístění plně kvalifikovat. Jinak systém nenajde cestu. Pokud c:\mypath například cesta není a přidáte ji pomocí uvozovek, path = %path%;"c:\mypath"musíte při jejím spuštění plně kvalifikovat jakýkoli proces c:\mypath .
Poznámka:
ASP.NET webové stránky a kódu řízení serveru se spouští v kontextu pracovního procesu ASP.NET na webovém serveru. Pokud použijete metodu Start v ASP.NET webové stránce nebo ovládacím prvku serveru, nový proces se spustí na webovém serveru s omezenými oprávněními. Proces se nespustí ve stejném kontextu jako klientský prohlížeč a nemá přístup k uživatelské ploše.
Kdykoli použijete Start ke spuštění procesu, možná ho budete muset zavřít nebo riskujete ztrátu systémových prostředků. Ukončete procesy pomocí CloseMainWindow nebo Kill. Pomocí vlastnosti HasExited můžete zkontrolovat, jestli už byl proces uzavřen.
Tady je potřeba poznámka o stavech bytu ve spravovaných vláknech. Pokud UseShellExecute je true součástí procesu vlastnost StartInfo , ujistěte se, že jste v aplikaci nastavili model threadingu nastavením atributu [STAThread] metody main() . V opačném případě může být spravované vlákno ve unknown stavu nebo ve MTA stavu, z nichž druhý je v konfliktu s UseShellExecute tím, trueže . Některé metody vyžadují, aby stav bytu nebyl unknown. Pokud stav není explicitně nastaven, když aplikace narazí na takovou metodu, výchozí hodnota MTAje a jakmile je nastavena, stav apartmánu nelze změnit. Způsobí však výjimku, MTA když prostředí operačního systému spravuje vlákno.
Viz také
Platí pro
Start(String, IEnumerable<String>)
- Zdroj:
- Process.cs
- Zdroj:
- Process.cs
- Zdroj:
- Process.cs
- Zdroj:
- Process.cs
- Zdroj:
- Process.cs
Spustí prostředek procesu zadáním názvu aplikace a sady argumentů příkazového řádku.
public:
static System::Diagnostics::Process ^ Start(System::String ^ fileName, System::Collections::Generic::IEnumerable<System::String ^> ^ arguments);
[System.Runtime.Versioning.SupportedOSPlatform("maccatalyst")]
[System.Runtime.Versioning.UnsupportedOSPlatform("ios")]
[System.Runtime.Versioning.UnsupportedOSPlatform("tvos")]
public static System.Diagnostics.Process Start(string fileName, System.Collections.Generic.IEnumerable<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.SupportedOSPlatform("maccatalyst")>]
[<System.Runtime.Versioning.UnsupportedOSPlatform("ios")>]
[<System.Runtime.Versioning.UnsupportedOSPlatform("tvos")>]
static member Start : string * seq<string> -> System.Diagnostics.Process
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
Public Shared Function Start (fileName As String, arguments As IEnumerable(Of String)) As Process
Parametry
- fileName
- String
Název souboru dokumentu nebo aplikace, který se má spustit v procesu.
- arguments
- IEnumerable<String>
Argumenty příkazového řádku, které se mají předat při spuštění procesu.
Návraty
Nový Process , který je přidružený k prostředku procesu nebo null pokud není spuštěn žádný prostředek procesu.
- Atributy
Poznámky
Každý argument bude v případě potřeby automaticky uchycený.
Důležité
Volání této metody s nedůvěryhodnými daty představuje bezpečnostní riziko. Volejte tuto metodu pouze s důvěryhodnými daty. Další informace naleznete v tématu Ověření všech vstupů.