Используйте thing[:]
>>> a = [1,2]
>>> b = a[:]
>>> a += [3]
>>> a
[1, 2, 3]
>>> b
[1, 2]
>>>
Ответ был комбинацией из ваших ответов. Но все правильное решение было:
ProcessStartInfo info = new ProcessStartInfo("C:\\PsTools");
info.FileName = @"C:\PsTools\psexec.exe";
info.Arguments = @"\\" + serverName + @" -i C:\WINDOWS\notepad.exe";
info.RedirectStandardOutput = true;
info.UseShellExecute = false;
Process p = Process.Start(info);
Просто для продления текущей версии ответа. Может возникнуть проблема с выполнением psexec
из-за политики ОС, для включения удаленного управления вам необходимо изменить реестр:
reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\system /v LocalAccountTokenFilterPolicy /t REG_DWORD /d 1 /f
Вы можете проверить это: Удаленный UAC LocalAccountTokenFilterPolicy
Путь UNC не выглядит хорошим.
После конкатенации строк он будет выглядеть примерно так:
"\\serverNameC:\WINDOWS\notepad.exe"
Попробуйте распечатать его. См. Документацию по UNC на MSDN и некоторые примеры здесь (или google о UNC-пути)
Если у вас есть только общие домены, это должно быть что-то вроде
"\\serverName\C$\WINDOWS\notepad.exe"
ИЛИ psexec позволяет использовать другую нотацию, но вы должны быть осторожны с двойными кавычками там
psexec \\serverName"c:\WINDOWS\notepad.exe"
Также убедитесь, что служба «Сервер» выполняется на целевой машине.
PsExec запускает исполняемый файл в удаленной системе и управляет потоками ввода и вывода процесса исполняемого файла, чтобы вы могли взаимодействовать с исполняемым файлом из локальной системы. PsExec делает это, извлекая из исполняемого образа встроенную службу Windows с именем Psexesvc и копируя ее на долю Admin $ в удаленной системе. Затем PsExec использует API-интерфейс диспетчера служб Windows, который имеет удаленный интерфейс, для запуска службы Psexesvc в удаленной системе.
blockquote>Активный ресурс Admin $ создается и управляется сервером «Сервер», службы, так что вам нужно, чтобы он работал для работы psexec ( http://windowsitpro.com/systems-management/psexec ).
Запуск интерактивной программы, такой как notepad.exe, не всегда открывает видимое окно на целевом ПК. Попробуйте открыть диспетчер задач на целевом компьютере во время запуска кода и посмотреть, появляется ли notepad.exe в списке запущенных процессов.
Я предлагаю сначала попробовать запустить psexec из командной строки, прежде чем пытаться вызвать его с помощью кода.
psexec \\serverName "notepad.exe"
Вы также можете использовать «интерактивный» флаг, чтобы он может взаимодействовать с рабочим столом на целевой.
psexec \\serverName "notepad.exe" -i