Zalak Parikh Ответов: 2

Вызвать исполняемый файл локального компьютера от Citrix


Можем ли мы запустить исполняемый файл клиентского компьютера из приложения, размещенного в Citrix?

Я уже перепробовал слишком много вариантов, таких как PsExec, Process.Start() с именем пользователя-паролем и т. д. Но я никак не мог найти решение.

В каждом решении я получал ошибку - "Доступ запрещен" или "имя Пользователя или пароль неверны".

Что я уже пробовал:

ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.FileName = "notepad.exe";
startInfo.Domain = "XXX";
startInfo.Password = new NetworkCredential("","myPCPassword").SecurePassword;
startInfo.UserName = "myusername";
startInfo.UseShellExecute = false;
Process start = Process.Start(startInfo);

и
psexec \\10.235.163.85 -u sesa530417 -p -i -s -h "notepad.exe"

2 Ответов

Рейтинг:
2
Рейтинг:
0

Dave Kreskowiak

Нет, ты не можешь. Приложение, работающее в среде Citrix, понятия не имеет, что к нему вообще подключен "клиентский" компьютер.

Единственный способ определить это и получить для него имя хоста/ip-адрес-это если ваш код на стороне Citrix взаимодействует с сервером Citrix для получения этой информации. Может быть, это и возможно, но я понятия не имею, как это сделать, потому что у меня никогда не было для этого причин. Для этого вам придется поискать в Google.

Теперь есть еще одна проблема. Чтобы запустить процесс на другой машине, код на стороне Citrix должен знать имя пользователя и пароль администратора для клиентской машины. Если сервер Citrix и клиенты находятся в одном домене Active Directory, это будет согласовано на всех задействованных машинах.

Если они находятся не в одном домене или вообще не в домене, ваш код должен знать имя учетной записи администратора и пароль для каждой машины, на которой он собирается запустить процесс. Это, скорее всего, не будет одинаковым для каждой машины.

..и еще одна проблема. Вы не можете запустить интерактивный процесс пользователя удаленно. Это предотвращается Windows по соображениям безопасности. Процесс может запуститься, но пользователь(ы), вошедший в систему на машине, никогда его не увидит.

Я думаю, вам придется пересмотреть то, что вы делаете, как вы это делаете и почему вы это делаете.