Вы можете инициализировать новый System.Diagnostics.ProcessStartInfo
, который должен получить информацию, необходимую для вашего процесса, в дополнение к WindowStyle
, которая указывает состояние окна, которое будет использоваться при запуске процесса, которое может быть Hidden
, Maximized
, Minimized
или Normal
. В вашем случае мы будем устанавливать это как Hidden
, чтобы процесс, который будет запущен, не сможет принимать ни вход, ни показывать результат от пользователя /.
Пример
System.Diagnostics.ProcessStartInfo myProcessInfo = new System.Diagnostics.ProcessStartInfo(); //Initializes a new ProcessStartInfo of name myProcessInfo
myProcessInfo.FileName = Environment.ExpandEnvironmentVariables("%SystemRoot%") + @"\System32\cmd.exe"; //Sets the FileName property of myProcessInfo to %SystemRoot%\System32\cmd.exe where %SystemRoot% is a system variable which is expanded using Environment.ExpandEnvironmentVariables
myProcessInfo.Arguments = "cd.."; //Sets the arguments to cd..
myProcessInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden; //Sets the WindowStyle of myProcessInfo which indicates the window state to use when the process is started to Hidden
System.Diagnostics.Process.Start(myProcessInfo); //Starts the process based on myProcessInfo
Снимок экрана
Следующий снимок экрана представляет диспетчер задач, показывающий один процесс, который был запущен нашим приложением. Однако его окно не видно.
[/g0]
Примечание. Процесс запуска не завершится, даже если вы закроете приложение.
Кроме того, для запуска процесса в качестве администратора вы можете установить свойство Verb
информации о запуске процесса в runas
Пример
System.Diagnostics.ProcessStartInfo myProcessInfo = new System.Diagnostics.ProcessStartInfo(); //Initializes a new ProcessStartInfo of name myProcessInfo
myProcessInfo.FileName = Environment.ExpandEnvironmentVariables("%SystemRoot%") + @"\System32\cmd.exe"; //Sets the FileName property of myProcessInfo to %SystemRoot%\System32\cmd.exe where %SystemRoot% is a system variable which is expanded using Environment.ExpandEnvironmentVariables
myProcessInfo.Arguments = "cd.."; //Sets the arguments to cd..
myProcessInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden; //Sets the WindowStyle of myProcessInfo which indicates the window state to use when the process is started to Hidden
myProcessInfo.Verb = "runas"; //The process should start with elevated permissions
System.Diagnostics.Process.Start(myProcessInfo); //Starts the process based on myProcessInfo
Примечание: если у вас есть при включенном элементе управления учетными записями вы можете попросить разрешить процессу начать с повышенными правами, если приложение, которое пыталось вызвать этот процесс, не выполнялось с повышенными разрешениями.
Если вы хотите пропустить подскажите, я думаю, что вы должны разрешить основному приложению начинать с повышенных разрешений. Для этого вам нужно открыть манифест приложения и убедиться, что добавлена следующая строка
<requestedExecutionLevel level="requireAdministrator" uiAccess="false"/>
. Это просто скажет, что ваше приложение запускается только с повышенными разрешениями. Таким образом, когда вы вызываете процесс как администратор, не будет приглашения, поскольку вызывающий процесс выполняется под администратором.
Спасибо, надеюсь, вы найдете это полезным:)
Это вызвано отсутствующим заголовком, специфичным для Uses-Agent. Похоже, сайт проверяет это. Вызов возвращает HTTP 406 (response.status_code). С заголовком возвращается HTTP 200.
Попробуйте это:
import requests
header = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36"}
response = requests.get(url='some url', headers=header)
requests.post(url='my_url', files={'file':response.content})