Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Старт програм/процессов на веб-сервере удалённо 
:(
    Опции темы
#Sage
Дата 23.10.2006, 14:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 25.2.2005

Репутация: нет
Всего: 1



Всем привет!
Собственно сама идея: есть веб-сайт, на странице сайта есть кнопка. Хочется чтоб по нажатию на эту кнопку запускался на сервере, например, notepad.exe.  Я нашёл метод  Process.Start(), но процесс создаётся в контексте web-сервера. Т.е. процесс запускается, но то же окно, например, notepad.exe не появляется. Есть ли какая-то возможность запустить процесс на сервере через веб страницу чтоб этот процесс запускался как будто кто-то вызвал его локально на веб сервере. (проще говоря, я нажимаю кнопку на веб-странице в browser'e, которая запускает notepad.exe и на сервере открывается notepad)

Это сообщение отредактировал(а) #Sage - 23.10.2006, 14:46
PM MAIL WWW   Вверх
ivashkanet
Дата 23.10.2006, 14:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 1
Всего: 149



Цитата(#Sage @  23.10.2006,  14:44 Найти цитируемый пост)
нажимаю кнопку на веб-странице в browser'e, которая запускает notepad.exe и на сервере открывается notepad

А толку от того что на сервере запустился notepad?
PM MAIL WWW ICQ   Вверх
Дрон
Дата 23.10.2006, 15:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java-ненавистник :)
****


Профиль
Группа: Участник Клуба
Сообщений: 3179
Регистрация: 29.12.2002
Где: Санкт-Петербург

Репутация: 2
Всего: 92



Цитата(#Sage @  23.10.2006,  15:44 Найти цитируемый пост)
Я нашёл метод  Process.Start(), но процесс создаётся в контексте web-сервера. Т.е. процесс запускается, но то же окно, например, notepad.exe не появляется. Есть ли какая-то возможность запустить процесс на сервере через веб страницу чтоб этот процесс запускался как будто кто-то вызвал его локально на веб сервере

Дано: сейчас notepad запускается от имени некоторого пользователя, используемого asp.net'ом, ты же хочешь запустить его от имени интерактивного пользователя. 

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

Но решение есть: использовать всё тот же Process.Start с указанием логина и пароля пользователя, от имени которого ты хочешь запустить процесс smile


Это сообщение отредактировал(а) Дрон - 23.10.2006, 15:46


--------------------
Да. Именно так.
PM   Вверх
#Sage
Дата 23.10.2006, 23:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 25.2.2005

Репутация: нет
Всего: 1



ivashkanet, Notepad - это пример. Я вобще-то об этом написал.


Дрон, Спасибо! Обзятельно попробую, надеюсь больше у меня вопросов не будет smile
PM MAIL WWW   Вверх
ivashkanet
Дата 24.10.2006, 09:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 1
Всего: 149



Цитата(#Sage @  23.10.2006,  23:53 Найти цитируемый пост)
ivashkanet, Notepad - это пример. Я вобще-то об этом написал.

Хорошо, а так: А толку от того что на сервере запустился "notepad"?
PM MAIL WWW ICQ   Вверх
#Sage
Дата 26.10.2006, 20:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 25.2.2005

Репутация: нет
Всего: 1



Нет, чего-то не получается smile. Вобще это реально чтоб через веб интерфейс по инету я запустил процесс на сервере так, как будто этот процесс был запущен юзером.  Т.е. как будто человек сидящий за сервером сам токрыл notepad (notepad в данном случае выступает в качетсве примера приложения которое надо запустить, вместо notepad'a предполагается можно исползовать любой exe'шник)
PM MAIL WWW   Вверх
Djuffin
Дата 27.10.2006, 00:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 55
Регистрация: 18.3.2005

Репутация: нет
Всего: 2



Код

        ProcessStartInfo startInfo = new ProcessStartInfo();
        if ((!string.IsNullOrEmpty(password)) && (userName != null))
        {
            SecureString pswd = new SecureString();
            foreach (char p in password)
                pswd.AppendChar(p);
            startInfo.UserName = userName;
        }
        startInfo.FileName = processName;
        startInfo.CreateNoWindow = false; //or true
        startInfo.RedirectStandardError = true;
        startInfo.RedirectStandardOutput = true;
        startInfo.RedirectStandardInput = true;
        startInfo.UseShellExecute = false;
        startInfo.StandardOutputEncoding = Encoding.GetEncoding("cp866");
        process = new Process();
        process.StartInfo = startInfo;
        process.OutputDataReceived += DataReceived;
        process.ErrorDataReceived += DataReceived;
        process.Exited += Exit;
        process.EnableRaisingEvents = true;
        started = process.Start();
        if (started)
        {
            process.BeginErrorReadLine();
            process.BeginOutputReadLine();

        }



Тут правда запускалась консольная утилита. Но я думаю это тебе все же может пригодиться.
PM MAIL   Вверх
Alexsar
Дата 4.10.2008, 22:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 96
Регистрация: 6.5.2005

Репутация: нет
Всего: 1



Тут возникла такая же проблема, надо запускать процесс на сервере. От имени зарегестрированного пользователя запускать не удаётся, пишет что приложение выполнело недопустимую операцию и будет закрыто. Так что предложил Djuffin не прокатило. Перевоплащение тоже не решило проблему, приложение сразу вылетает, как и в предыдущем случае.
В справке мсдн на счёт запуска процессов вот что пишут:
ASP.NET Web page and server control code executes in the context of the ASP.NET worker process on the Web server. If you use the Start method in an ASP.NET Web page or server control, the new process executes on the Web server with restricted permissions. The process does not start in the same context as the client browser, and does not have access to the user desktop.

Похоже, запускать можно только в контексте ASP.
Вопрос, может вообще не реально запустить процесс от имени зарегестрированного пользователя винды(не ASP)?
Или кто то всё же нашаманил и смог запустить? smile 
Ждём ответов smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Любитель
Mymik
mr.DUDA

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Любитель, Mymik, mr.DUDA.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка под ASP.NET | Следующая тема »


 




[ Время генерации скрипта: 0.0779 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.