Process.Start Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Запускает ресурс процесса и связывает его с компонентом Process.
Перегрузки
Start(String, String, String, SecureString, String) |
Запускает ресурс процесса путем указания имени приложения, набора аргументов командной строки, имени пользователя, пароля и домена и связывает ресурс с новым компонентом Process. |
Start(String, String, SecureString, String) |
Запускает ресурс процесса путем указания имени приложения, имени пользователя, пароля и домена и связывает ресурс с новым компонентом Process. |
Start(String, String) |
Запускает ресурс процесса путем указания имени приложения и набора аргументов командной строки и связывает ресурс с новым компонентом Process. |
Start(String) |
Запускает ресурс процесса путем указания имени документа или файла приложения и связывает ресурс с новым компонентом Process. |
Start(ProcessStartInfo) |
Запускает ресурс процесса, определенный параметром, содержащим стартовую информацию процесса (например, имя файла запускаемого процесса), и связывает ресурс с новым компонентом Process. |
Start() |
Запускает (или повторно использует) ресурс процесса, определенный свойством StartInfo этого компонента Process, и связывает его с компонентом. |
Start(String, IEnumerable<String>) |
Запускает ресурс процесса путем указания имени приложения и набора аргументов командной строки. |
Start(String, String, String, SecureString, String)
- Исходный код:
- Process.Unix.cs
- Исходный код:
- Process.Unix.cs
- Исходный код:
- Process.Unix.cs
Важно!
Этот API несовместим с CLS.
Запускает ресурс процесса путем указания имени приложения, набора аргументов командной строки, имени пользователя, пароля и домена и связывает ресурс с новым компонентом Process.
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
Параметры
- fileName
- String
Имя файла приложения для запуска в процессе.
- arguments
- String
Аргументы командной строки для передачи при запуске процесса.
- userName
- String
Имя пользователя, используемое при запуске процесса.
- password
- SecureString
Объект SecureString, содержащий пароль для использования при запуске процесса.
- domain
- String
Домен, используемый при запуске процесса.
Возвращаемое значение
Новый процесс Process, связанный с ресурсом процесса, или null
, если ресурс процесса не запущен. Обратите внимание, что новый процесс, запущенный наряду с уже выполняющимися экземплярами того же процесса, будет независимым от других. Кроме того, метод Start может вернуть ненулевой тип Process, свойство HasExited которого равно true
. В этом случае запущенный процесс может активировать существующий экземпляр самого себя, а затем завершить работу.
- Атрибуты
Исключения
Не указано имя файла.
Возникла ошибка при открытии связанного файла.
-или-
Не удалось найти файл, указанный в fileName
.
-или-
Сумма длины аргументов и длины полного пути к соответствующему файлу превышает 2080. Сообщение об ошибке, связанное с этим исключением, может быть следующим: "Область данных, переданная в системный вызов, слишком мала" или "Доступ запрещен".
Объект процесса уже удален.
Этот элемент не поддерживается в Linux или macOS (только в .NET Core).
Комментарии
Используйте эту перегрузку для создания нового процесса и его основного потока, указав имя файла, аргументы командной строки, имя пользователя, пароль и домен. Затем новый процесс запускает указанный исполняемый файл в контексте безопасности указанных учетных данных (пользователя, домена и пароля).
Важно!
Вызов этого метода для ненадежных данных представляет угрозу безопасности. Вызывайте этот метод только для надежных данных. Дополнительные сведения см. в разделе Проверка всех входных данных.
Примечание
Если исполняемый файл находится на удаленном диске, необходимо определить сетевую папку с помощью универсального идентификатора ресурса (URI), а не связанной буквы диска.
Примечание
Если адрес исполняемого файла для запуска является URL-адресом, процесс не запускается и null
возвращается.
Эта перегрузка позволяет запустить процесс без предварительного создания нового Process экземпляра. Перегрузка является альтернативой явным шагам создания нового Process экземпляра, задания FileNameсвойств StartInfo , ArgumentsUserName, Password, и Domain свойства и вызова Start экземпляраProcess.
Точно так же, как диалоговое окно Запуск может принимать имя исполняемого файла с расширением .exe или без нее, расширение .exe является необязательным в параметре fileName
. Например, можно задать fileName
для параметра значение "Notepad.exe" или "Блокнот". fileName
Если параметр представляет исполняемый файл, arguments
параметр может представлять файл для действий, например текстовый файл в Notepad.exe myfile.txt
.
Примечание
Имя файла должно представлять исполняемый файл в Start перегрузках, имеющих userName
параметры , password
и domain
.
Каждый раз, когда вы используете Start для запуска процесса, может потребоваться закрыть его или вы рискуете потерять системные ресурсы. Закройте процессы с помощью CloseMainWindow или Kill. Вы можете проверка, был ли процесс уже закрыт, с помощью его HasExited свойства .
Применяется к
Start(String, String, SecureString, String)
- Исходный код:
- Process.Unix.cs
- Исходный код:
- Process.Unix.cs
- Исходный код:
- Process.Unix.cs
Важно!
Этот API несовместим с CLS.
Запускает ресурс процесса путем указания имени приложения, имени пользователя, пароля и домена и связывает ресурс с новым компонентом Process.
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
Параметры
- fileName
- String
Имя файла приложения для запуска в процессе.
- userName
- String
Имя пользователя, используемое при запуске процесса.
- password
- SecureString
Объект SecureString, содержащий пароль для использования при запуске процесса.
- domain
- String
Домен, используемый при запуске процесса.
Возвращаемое значение
Новый процесс Process, связанный с ресурсом процесса, или null
, если ресурс процесса не запущен. Обратите внимание, что новый процесс, запущенный наряду с уже выполняющимися экземплярами того же процесса, будет независимым от других. Кроме того, метод Start может вернуть ненулевой тип Process, свойство HasExited которого равно true
. В этом случае запущенный процесс может активировать существующий экземпляр самого себя, а затем завершить работу.
- Атрибуты
Исключения
Не указано имя файла.
Произошла ошибка при открытии связанного файла.
-или-
Не удалось найти файл, указанный в fileName
.
Объект процесса уже удален.
Этот элемент не поддерживается в Linux или macOS (только в .NET Core).
Примеры
В следующем примере кода показано использование этой перегрузки для запуска исполняемого файла, а также демонстрируется создание при Win32Exception попытке запустить приложение, связанное с неисключаемым файлом.
// 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
Комментарии
Используйте эту перегрузку для создания нового процесса и его основного потока, указав имя файла, имя пользователя, пароль и домен. Затем новый процесс запускает указанный исполняемый файл в контексте безопасности указанных учетных данных (пользователя, домена и пароля).
Важно!
Вызов этого метода для ненадежных данных представляет угрозу безопасности. Вызывайте этот метод только для надежных данных. Дополнительные сведения см. в разделе Проверка всех входных данных.
Примечание
Если исполняемый файл находится на удаленном диске, необходимо определить сетевую папку с помощью универсального идентификатора ресурса (URI), а не связанной буквы диска.
Примечание
Если адрес исполняемого файла для запуска является URL-адресом, процесс не запускается и null
возвращается.
Эта перегрузка позволяет запустить процесс без предварительного создания нового Process экземпляра. Перегрузка является альтернативой явным шагам создания нового Process экземпляра, задания FileNameсвойств StartInfo , PasswordUserName, и Domain свойства и вызова Start экземпляра Process .
Точно так же, как диалоговое окно Запуск может принимать имя исполняемого файла с расширением .exe или без нее, расширение .exe является необязательным в параметре fileName
. Например, можно задать fileName
для параметра значение "Notepad.exe" или "Блокнот". fileName
Если параметр представляет исполняемый файл, arguments
параметр может представлять файл для действий, например текстовый файл в Notepad.exe myfile.txt
.
Примечание
Имя файла должно представлять исполняемый файл в Start перегрузках, имеющих userName
параметры , password
и domain
.
Каждый раз, когда вы используете Start для запуска процесса, может потребоваться закрыть его или вы рискуете потерять системные ресурсы. Закройте процессы с помощью CloseMainWindow или Kill. Вы можете проверка, был ли процесс уже закрыт, с помощью его HasExited свойства .
Применяется к
Start(String, String)
- Исходный код:
- Process.cs
- Исходный код:
- Process.cs
- Исходный код:
- Process.cs
Запускает ресурс процесса путем указания имени приложения и набора аргументов командной строки и связывает ресурс с новым компонентом Process.
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
Параметры
- fileName
- String
Имя файла приложения для запуска в процессе.
- arguments
- String
Аргументы командной строки для передачи при запуске процесса.
Возвращаемое значение
Новый процесс Process, связанный с ресурсом процесса, или null
, если ресурс процесса не запущен. Обратите внимание, что новый процесс, запущенный наряду с уже выполняющимися экземплярами того же процесса, будет независимым от других. Кроме того, метод Start может вернуть ненулевой тип Process, свойство HasExited которого равно true
. В этом случае запущенный процесс может активировать существующий экземпляр самого себя, а затем завершить работу.
- Атрибуты
Исключения
Значение параметра fileName
или параметра arguments
— null
.
Возникла ошибка при открытии связанного файла.
-или-
Не удалось найти файл, указанный в fileName
.
-или-
Сумма длины аргументов и длины полного пути к процессу превышает 2080. Сообщение об ошибке, связанное с этим исключением, может быть следующим: "Область данных, переданная в системный вызов, слишком мала" или "Доступ запрещен".
Объект процесса уже удален.
Переменная среды PATH содержит строку с кавычками.
Примеры
В следующем примере сначала создается экземпляр интернет-Обозреватель и отображается содержимое папки Избранное в браузере. Затем он запускает некоторые другие экземпляры интернет-Обозреватель и отображает определенные страницы или сайты. Наконец, он запускает интернет-Обозреватель с свертыванием окна при переходе на определенный сайт.
#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
Комментарии
Используйте эту перегрузку для запуска ресурса процесса, указав имя файла и аргументы командной строки. Перегрузка связывает ресурс с новым Process объектом.
Важно!
Вызов этого метода для ненадежных данных представляет угрозу безопасности. Вызывайте этот метод только для надежных данных. Дополнительные сведения см. в разделе Проверка всех входных данных.
Примечание
Если адрес исполняемого файла для запуска является URL-адресом, процесс не запускается и null
возвращается.
Эта перегрузка позволяет запустить процесс без предварительного создания нового Process экземпляра. Перегрузка является альтернативой явным шагам создания нового Process экземпляра, задания FileName элементов StartInfo и Arguments свойства и вызова Start экземпляраProcess.
Запуск процесса с указанием имени файла и аргументов аналогичен вводу имени файла и аргументов командной строки в Run
диалоговом окне меню Windows Start
. Таким образом, имя файла не обязательно представлять исполняемый файл. Он может иметь любой тип файла, для которого расширение было связано с приложением, установленным в системе. Например, имя файла может иметь расширение .txt, если у вас есть текстовые файлы, связанные с редактором, таким как Блокнот, или .doc, если вы связали .doc файлы с текстовым инструментом, например Microsoft Word. Аналогичным образом, так же, как Run
диалоговое окно может принимать имя исполняемого файла с расширением .exe или без нее, расширение .exe является необязательным в параметре fileName
. Например, можно задать fileName
для параметра значение "Notepad.exe" или "Блокнот". fileName
Если параметр представляет исполняемый файл, arguments
параметр может представлять файл для действий, например текстовый файл в Notepad.exe myfile.txt
. fileName
Если параметр представляет файл команды (.cmd), параметр должен содержать аргумент "/c
" или "/k
", arguments
чтобы указать, будет ли окно команд выходить или оставаться после завершения.
В отличие от других перегрузок, перегрузка объекта Start без параметров не static
является членом. Используйте эту перегрузку Process , если вы уже создали экземпляр и указали сведения о запуске (включая имя файла) и хотите запустить ресурс процесса и связать его с существующим Process экземпляром. Используйте одну из static
перегрузок, если вы хотите создать новый Process компонент, а не запускать процесс для существующего компонента. Эта перегрузка и перегрузка без параметров позволяют указать имя файла запускаемого ресурса процесса и передаваемые аргументы командной строки.
Если в системе объявлен заключенный в кавычки путь в переменной path, при запуске любого процесса из этого расположения необходимо указание полного пути. В противном случае система не найдет этот путь. Например, если в переменной path нет пути c:\mypath
и он добавляется к ней с использованием кавычек (path = %path%;"c:\mypath"
), при запуске любого процесса из c:\mypath
необходимо полностью указывать путь к файлу.
Примечание
ASP.NET веб-страница и код серверного элемента управления выполняется в контексте рабочего процесса ASP.NET на веб-сервере. Если вы используете Start метод в ASP.NET веб-странице или серверном элементе управления, новый процесс выполняется на веб-сервере с ограниченными разрешениями. Процесс не запускается в том же контексте, что и браузер клиента, и не имеет доступа к рабочему столу пользователя.
Каждый раз, когда вы используете Start для запуска процесса, может потребоваться закрыть его или вы рискуете потерять системные ресурсы. Закройте процессы с помощью CloseMainWindow или Kill. Вы можете проверка, был ли процесс уже закрыт, с помощью его HasExited свойства .
Здесь требуется примечание о состояниях объекта в управляемых потоках. Если UseShellExecute параметр находится true
в свойстве компонента StartInfo процесса, убедитесь, что в приложении задана потоковая модель, задав атрибут [STAThread]
в методе main()
. В противном случае управляемый поток может находиться в unknown
состоянии или помещать в MTA
состояние , последний из которых конфликтует с UseShellExecute .true
Некоторые методы требуют, чтобы состояние квартиры не было unknown
. Если состояние не задано явным образом, при обнаружении приложения такого метода по умолчанию используется MTA
значение , а после установки состояние квартиры изменить нельзя. Однако вызывает исключение, MTA
когда оболочка операционной системы управляет потоком.
См. также раздел
Применяется к
Start(String)
- Исходный код:
- Process.cs
- Исходный код:
- Process.cs
- Исходный код:
- Process.cs
Запускает ресурс процесса путем указания имени документа или файла приложения и связывает ресурс с новым компонентом Process.
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
Параметры
- fileName
- String
Имя документа или файла приложения для запуска в процессе.
Возвращаемое значение
Новый процесс Process, связанный с ресурсом процесса, или null
, если ресурс процесса не запущен. Обратите внимание, что новый процесс, запущенный наряду с уже выполняющимися экземплярами того же процесса, будет независимым от других. Кроме того, метод Start может вернуть ненулевой тип Process, свойство HasExited которого равно true
. В этом случае запущенный процесс может активировать существующий экземпляр самого себя, а затем завершить работу.
- Атрибуты
Исключения
Возникла ошибка при открытии связанного файла.
-или-
Не удалось найти файл, указанный в fileName
.
Объект процесса уже удален.
Переменная среды PATH содержит строку с кавычками.
Примеры
В следующем примере сначала создается экземпляр интернет-Обозреватель и отображается содержимое папки Избранное в браузере. Затем он запускает некоторые другие экземпляры интернет-Обозреватель и отображает определенные страницы или сайты. Наконец, он запускает интернет-Обозреватель с свертыванием окна при переходе на определенный сайт.
#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
Комментарии
Используйте эту перегрузку, чтобы запустить ресурс процесса, указав его имя файла. Перегрузка связывает ресурс с новым Process объектом.
Важно!
Вызов этого метода для ненадежных данных представляет угрозу безопасности. Вызывайте этот метод только для надежных данных. Дополнительные сведения см. в разделе Проверка всех входных данных.
Примечание
Если адрес исполняемого файла для запуска является URL-адресом, процесс не запускается и null
возвращается.
Эта перегрузка позволяет запустить процесс без предварительного создания нового Process экземпляра. Перегрузка является альтернативой явным действиям по созданию нового Process экземпляраStartInfo, настройке FileName члена свойства и вызову Start экземпляраProcess.
Вы можете запустить приложение ClickOnce, задав fileName
для параметра расположение (например, веб-адрес), с которого вы изначально установили приложение. Не запускайте приложение ClickOnce, указывая его установленное расположение на жестком диске.
Запуск процесса с указанием имени файла аналогичен вводу сведений Run
в диалоговом окне меню Windows Start
. Таким образом, имя файла не обязательно представлять исполняемый файл. Он может иметь любой тип файла, для которого расширение было связано с приложением, установленным в системе. Например, имя файла может иметь расширение .txt, если у вас есть текстовые файлы, связанные с редактором, таким как Блокнот, или .doc, если вы связали .doc файлы с текстовым инструментом, например Microsoft Word. Аналогичным образом, так же, как Run
диалоговое окно может принимать имя исполняемого файла с расширением .exe или без нее, расширение .exe является необязательным в параметре fileName
. Например, можно задать fileName
для параметра значение "Notepad.exe" или "Блокнот".
Эта перегрузка не разрешает использование аргументов командной строки для процесса. Если необходимо указать один или несколько аргументов командной строки для процесса, используйте перегрузки Process.Start(ProcessStartInfo) или Process.Start(String, String) .
В отличие от других перегрузок, перегрузка объекта Start без параметров не static
является членом. Используйте эту перегрузку Process , если вы уже создали экземпляр и указали сведения о запуске (включая имя файла) и хотите запустить ресурс процесса и связать его с существующим Process экземпляром. Используйте одну из static
перегрузок, если вы хотите создать новый Process компонент, а не запускать процесс для существующего компонента. И эта перегрузка, и перегрузка без параметров позволяют указать имя файла запускаемого ресурса процесса.
Если в системе объявлен заключенный в кавычки путь в переменной path, при запуске любого процесса из этого расположения необходимо указание полного пути. В противном случае система не найдет этот путь. Например, если в переменной path нет пути c:\mypath
и он добавляется к ней с использованием кавычек (path = %path%;"c:\mypath"
), при запуске любого процесса из c:\mypath
необходимо полностью указывать путь к файлу.
Примечание
ASP.NET веб-страница и код серверного элемента управления выполняется в контексте рабочего процесса ASP.NET на веб-сервере. Если вы используете Start метод в ASP.NET веб-странице или серверном элементе управления, новый процесс выполняется на веб-сервере с ограниченными разрешениями. Процесс не запускается в том же контексте, что и браузер клиента, и не имеет доступа к рабочему столу пользователя.
Каждый раз, когда вы используете Start для запуска процесса, может потребоваться закрыть его или вы рискуете потерять системные ресурсы. Закройте процессы с помощью CloseMainWindow или Kill. Вы можете проверка, был ли процесс уже закрыт, с помощью его HasExited свойства .
Здесь требуется примечание о состояниях объекта в управляемых потоках. Если UseShellExecute параметр находится true
в свойстве компонента StartInfo процесса, убедитесь, что в приложении задана потоковая модель, задав атрибут [STAThread]
в методе main()
. В противном случае управляемый поток может находиться в unknown
состоянии или помещать в MTA
состояние , последний из которых конфликтует с UseShellExecute .true
Некоторые методы требуют, чтобы состояние квартиры не было unknown
. Если состояние не задано явным образом, при обнаружении приложения такого метода по умолчанию используется MTA
значение , а после установки состояние квартиры изменить нельзя. Однако вызывает исключение, MTA
когда оболочка операционной системы управляет потоком.
См. также раздел
Применяется к
Start(ProcessStartInfo)
- Исходный код:
- Process.cs
- Исходный код:
- Process.cs
- Исходный код:
- Process.cs
Запускает ресурс процесса, определенный параметром, содержащим стартовую информацию процесса (например, имя файла запускаемого процесса), и связывает ресурс с новым компонентом Process.
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
Параметры
- startInfo
- ProcessStartInfo
Объект ProcessStartInfo, который содержит информацию, использующуюся для запуска процесса, включая имя файла и все аргументы командной строки.
Возвращаемое значение
Новый процесс Process, связанный с ресурсом процесса, или null
, если ресурс процесса не запущен. Обратите внимание, что новый процесс, запущенный наряду с уже выполняющимися экземплярами того же процесса, будет независимым от других. Кроме того, метод Start может вернуть ненулевой тип Process, свойство HasExited которого равно true
. В этом случае запущенный процесс может активировать существующий экземпляр самого себя, а затем завершить работу.
- Атрибуты
Исключения
Имя файла не было указано в свойстве FileName параметра startInfo
.
-или-
Свойство UseShellExecute параметраstartInfo
имеет значение true
и RedirectStandardInput, RedirectStandardOutput или свойство RedirectStandardError также имеет значение true
.
-или-
Свойство UseShellExecute параметра startInfo
имеет значение true
, и свойство UserName не равно null
или не является пустым или свойство Password не равно null
.
Параметр startInfo
имеет значение null
.
Объект процесса уже удален.
Возникла ошибка при открытии связанного файла.
-или-
Файл, указанный в свойстве FileName параметра startInfo
, не найден.
-или-
Сумма длины аргументов и длины полного пути к процессу превышает 2080. Сообщение об ошибке, связанное с этим исключением, может быть следующим: "Область данных, переданная в системный вызов, слишком мала" или "Доступ запрещен".
Метод не поддерживается в операционных системах без поддержки оболочки, таких как Nano Server (только в .NET Core).
Примеры
В следующем примере сначала создается экземпляр интернет-Обозреватель и отображается содержимое папки Избранное в браузере. Затем он запускает некоторые другие экземпляры интернет-Обозреватель и отображает определенные страницы или сайты. Наконец, он запускает интернет-Обозреватель с свертыванием окна при переходе на определенный сайт.
Дополнительные примеры других способов использования этого метода см. в разделе об отдельных свойствах ProcessStartInfo класса .
#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
Комментарии
Используйте эту перегрузку для запуска ресурса процесса, указав ProcessStartInfo экземпляр . Перегрузка связывает ресурс с новым Process объектом.
Важно!
Вызов этого метода для ненадежных данных представляет угрозу безопасности. Вызывайте этот метод только для надежных данных. Дополнительные сведения см. в разделе Проверка всех входных данных.
Примечание
Если адрес исполняемого файла для запуска является URL-адресом, процесс не запускается и null
возвращается.
Эта перегрузка позволяет запустить процесс без предварительного создания нового Process экземпляра. Использование этой перегрузки с параметром является альтернативой ProcessStartInfo явным действиям по созданию нового Process экземпляра, настройке его StartInfo свойств и вызову Start экземпляра Process .
Использование экземпляра ProcessStartInfo в качестве параметра позволяет выполнять вызов Start с наибольшим контролем над тем, что передается в вызов, чтобы запустить процесс. Если необходимо передать только имя файла или имя файла и аргументы, создавать новый ProcessStartInfo экземпляр необязательно, хотя это и есть вариант. Единственное Process.StartInfo свойство, которое должно быть задано, — это FileName свойство . Свойство FileName не обязательно представляет исполняемый файл. Он может иметь любой тип файла, для которого расширение было связано с приложением, установленным в системе. Например, FileName свойство может иметь расширение .txt, если у вас есть связанные текстовые файлы с редактором, например Блокнот, или расширение .doc, если вы связали .doc файлы с текстовым инструментом, например Microsoft Word.
Вы можете запустить приложение ClickOnce, указав расположение (например, веб-адрес), с которого вы изначально установили приложение. Не запускайте приложение ClickOnce, указывая его установленное расположение на жестком диске.
ProcessStartInfo.UserName Если заданы свойства и ProcessStartInfo.Password экземпляраStartInfo, вызывается неуправляемая CreateProcessWithLogonW
функция, которая запускает процесс в новом окне, даже если ProcessStartInfo.CreateNoWindow значение свойства равно true
или ProcessStartInfo.WindowStyle значение свойства равно ProcessWindowStyle.Hidden. Если свойство имеет значение null
, ProcessStartInfo.UserName свойство должно быть в формате имени участника-пользователя, DNS_domain_name пользователя@.ProcessStartInfo.Domain
В отличие от других перегрузок, перегрузка объекта Start без параметров не static
является членом. Используйте эту перегрузку Process , если вы уже создали экземпляр и указали сведения о запуске (включая имя файла) и хотите запустить ресурс процесса и связать его с существующим Process экземпляром. Используйте одну из static
перегрузок, если вы хотите создать новый Process компонент, а не запускать процесс для существующего компонента. И эта перегрузка, и перегрузка без параметров позволяют указать сведения о начале ресурса процесса с помощью экземпляра ProcessStartInfo .
Если в системе объявлен заключенный в кавычки путь в переменной path, при запуске любого процесса из этого расположения необходимо указание полного пути. В противном случае система не найдет этот путь. Например, если в переменной path нет пути c:\mypath
и он добавляется к ней с использованием кавычек (path = %path%;"c:\mypath"
), при запуске любого процесса из c:\mypath
необходимо полностью указывать путь к файлу.
Примечание
ASP.NET веб-страница и код серверного элемента управления выполняется в контексте рабочего процесса ASP.NET на веб-сервере. Если вы используете Start метод в ASP.NET веб-странице или серверном элементе управления, новый процесс выполняется на веб-сервере с ограниченными разрешениями. Процесс не запускается в том же контексте, что и браузер клиента, и не имеет доступа к рабочему столу пользователя.
Каждый раз, когда вы используете Start для запуска процесса, может потребоваться закрыть его или вы рискуете потерять системные ресурсы. Закройте процессы с помощью CloseMainWindow или Kill. Вы можете проверка, был ли процесс уже закрыт, с помощью его HasExited свойства .
Здесь требуется примечание о состояниях объекта в управляемых потоках. Если UseShellExecute параметр имеет значение startInfo
true
, убедитесь, что в приложении задана потоковая модель, задав атрибут [STAThread]
в методе main()
. В противном случае управляемый поток может находиться в unknown
состоянии или помещать в MTA
состояние , последний из которых конфликтует с UseShellExecute .true
Некоторые методы требуют, чтобы состояние квартиры не было unknown
. Если состояние не задано явным образом, при обнаружении приложения такого метода по умолчанию используется MTA
значение , а после установки состояние квартиры изменить нельзя. Однако вызывает исключение, MTA
когда оболочка операционной системы управляет потоком.
См. также раздел
Применяется к
Start()
- Исходный код:
- Process.cs
- Исходный код:
- Process.cs
- Исходный код:
- 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
Возвращаемое значение
Значение true
, если ресурс процесса запущен; значение false
, если новый ресурс процесса не был запущен (например, при повторном использовании существующего процесса).
- Атрибуты
Исключения
Имя файла не было указано в свойстве StartInfo компонента Process.
-или-
Член UseShellExecute свойства StartInfo имеет значение true
, тогда как RedirectStandardInput, RedirectStandardOutputили RedirectStandardError имеет значение true
.
Произошла ошибка при открытии связанного файла.
Объект процесса уже удален.
Метод не поддерживается в операционных системах без поддержки оболочки, таких как Nano Server (только в .NET Core).
Примеры
В следующем примере для запуска процесса используется экземпляр класса Process.
#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
Комментарии
Используйте эту перегрузку, чтобы запустить ресурс процесса и связать его с текущим Process компонентом. Возвращаемое значение true
указывает, что был запущен новый ресурс процесса. Если ресурс процесса, указанный FileNameStartInfo членом свойства, уже запущен на компьютере, дополнительный ресурс процесса не запускается. Вместо этого повторно используется запущенный ресурс процесса и false
возвращается.
Вы можете запустить приложение ClickOnce, указав расположение (например, веб-адрес), с которого вы изначально установили приложение. Не запускайте приложение ClickOnce, указывая его установленное расположение на жестком диске.
Важно!
Использование экземпляра этого объекта с ненадежными данными представляет угрозу безопасности. Используйте этот объект только с надежными данными. Дополнительные сведения см. в разделе Проверка всех входных данных.
Примечание
Если вы используете Visual Studio, эта перегрузка Start метода вставляется в код после перетаскивания Process компонента в конструктор. Properties
Используйте окно для развертывания StartInfo
категории и записи соответствующего значения в FileName
свойство . Изменения будут отображаться в процедуре InitializeComponent
формы.
Эта перегрузка не Start является методом static
. Его необходимо вызвать из экземпляра Process класса . Перед вызовом Startнеобходимо сначала указать StartInfo сведения о свойстве для этого Process экземпляра, так как эти сведения используются для определения запуска ресурса процесса.
Другими перегрузками Start метода являются члены static
. Вам не нужно создавать экземпляр компонента перед вызовом Process этих перегрузок метода . Вместо этого можно вызвать Start для Process самого класса и создать новый Process компонент, если процесс был запущен. Или возвращается, null
если процесс был использован повторно. Ресурс процесса автоматически связывается с новым Process компонентом, возвращаемым методом Start .
Элементы StartInfo можно использовать для дублирования функциональности диалогового Run
окна меню Windows Start
. Все, что можно ввести в командную строку, можно запустить, задав соответствующие значения в свойстве StartInfo . StartInfo Единственным свойством, которое необходимо задать, является FileName свойство . Свойство FileName не обязательно должно быть исполняемым файлом. Он может иметь любой тип файла, для которого расширение было связано с приложением, установленным в системе. Например, свойство может иметь расширение .txt, FileName если у вас есть связанные текстовые файлы с редактором, например Блокнот, или расширение .doc, если вы связали .doc файлы с текстовым инструментом, таким как Microsoft Word.
В командной строке можно указать действия для определенных типов файлов. Например, можно печатать документы или редактировать текстовые файлы. Укажите эти действия с Verb помощью элемента StartInfo свойства . Для других типов файлов можно указать аргументы командной строки при запуске файла из диалогового Run
окна. Например, вы можете передать URL-адрес в качестве аргумента, если указать браузер в FileNameкачестве . Эти аргументы можно указать в элементе StartInfoArguments свойства.
Если в системе объявлен заключенный в кавычки путь в переменной path, при запуске любого процесса из этого расположения необходимо указание полного пути. В противном случае система не найдет этот путь. Например, если в переменной path нет пути c:\mypath
и он добавляется к ней с использованием кавычек (path = %path%;"c:\mypath"
), при запуске любого процесса из c:\mypath
необходимо полностью указывать путь к файлу.
Примечание
ASP.NET веб-страница и серверный управляющий код выполняется в контексте рабочего процесса ASP.NET на веб-сервере. Если вы используете Start метод в ASP.NET веб-странице или серверном элементе управления, новый процесс выполняется на веб-сервере с ограниченными разрешениями. Процесс не запускается в том же контексте, что и браузер клиента, и не имеет доступа к рабочему столу пользователя.
Каждый раз, когда вы используете Start для запуска процесса, может потребоваться закрыть его или вы рискуете потерять системные ресурсы. Закройте процессы с помощью CloseMainWindow или Kill. Можно проверка, был ли процесс уже закрыт, используя его HasExited свойство .
Здесь необходимо упомнить о состояниях подразделения в управляемых потоках. Если UseShellExecute свойство находится true
в свойстве компонента StartInfo процесса, убедитесь, что вы задали модель потоков в приложении, задав атрибут [STAThread]
в методе main()
. В противном случае управляемый поток может находиться в unknown
состоянии или находиться в MTA
состоянии , последний из которых конфликтует с UseShellExecute .true
Для некоторых методов требуется, чтобы состояние подразделения не было unknown
. Если состояние не задано явным образом, то при обнаружении приложения такого метода по умолчанию используется MTA
значение , а после установки состояние подразделения изменить нельзя. Однако вызывает исключение, MTA
когда оболочка операционной системы управляет потоком.
См. также раздел
Применяется к
Start(String, IEnumerable<String>)
- Исходный код:
- Process.cs
- Исходный код:
- Process.cs
- Исходный код:
- Process.cs
Запускает ресурс процесса путем указания имени приложения и набора аргументов командной строки.
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
Параметры
- fileName
- String
Имя документа или файла приложения для запуска в процессе.
- arguments
- IEnumerable<String>
Аргументы командной строки для передачи при запуске процесса.
Возвращаемое значение
Новый процесс Process, связанный с ресурсом процесса, или null
, если ресурс процесса не запущен.
- Атрибуты
Комментарии
При необходимости каждый аргумент будет экранирован автоматически.
Важно!
Вызов этого метода для ненадежных данных представляет угрозу безопасности. Вызывайте этот метод только для надежных данных. Дополнительные сведения см. в разделе Проверка всех входных данных.