dattaprasaddhuri Ответов: 2

Системы.диагностика.процесс процесс не работает на IIS после таких?


Я пытаюсь установить файл. exe из веб-приложения. когда я запускаю приложение локально(с сервера разработки asp), оно устанавливается правильно. Но когда я размещался на IIS, он не работал.

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

string filepath = Server.MapPath("~/NewFolder1/Test.msi");

               ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "alertMessage", "alert('"+filepath+"')", true);
               System.Diagnostics.Process process = new System.Diagnostics.Process();
               System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
               startInfo.UseShellExecute = true;
               startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Normal;
               startInfo.FileName = "cmd.exe";
              // startInfo.Arguments = "/K msiexec.exe /i \"" + @"D:\Datta\CrispDoxCompression.msi" + "\" /quite /qn";
               startInfo.Arguments = "/K msiexec.exe /i \"" + filepath + "\" /qn";
               startInfo.Verb = "runas";
               process.StartInfo = startInfo;
               process.Start();

2 Ответов

Рейтинг:
2

ZurdoDev

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


dattaprasaddhuri

@RyanDev проблема в том, что я тоже не получаю никаких ошибок.

ZurdoDev

В это трудно поверить, но возможно. Как бы то ни было, наиболее вероятной причиной являются разрешения.

dattaprasaddhuri

@RyanDev я дал соответствующее разрешение. Я добавил IUSER и даю права fullControl на приложение, но оно все равно не работает

ZurdoDev

Подождите секунду, ваш комментарий в другом решении говорит: "что я хочу, так это установить этот msi / exe-файл на клиентскую машину молча, как активный X-компонент." Ты не можешь этого сделать. Это огромный риск для безопасности, и если бы это было возможно, то у всех нас были бы вирусы. Вы должны иметь выполнение клиентского кода, чтобы иметь возможность сделать что-то подобное.

Рейтинг:
15

Afzaal Ahmad Zeeshan

Воспользуйся здравым смыслом и скажи мне, где этот файл?

string filepath = Server.MapPath("~/NewFolder1/Test.msi");

Доступен ли он локально? Нет. Он присутствует на сервере и в коде, Process.Start() будет выполняться и на сервере. Клиент в этом случае едва ли является триггером, и любое действие на стороне сервера ничего ему не скажет, и, как уже упоминалось в решении 1, администраторы также не позволят вам выполнить установщик на своей машине — выдав запрос.
Цитата:
Я пытаюсь установить файл. exe из веб-приложения. когда я запускаю приложение локально(с сервера разработки asp), оно устанавливается правильно.
Потому что в этот момент он будет доступен на той же клиентской машине, и все пойдет хорошо, так как у вас есть права администратора, и вы знаете, где находится файл. Вот почему он работает правильно.
Цитата:
Но когда я размещался на IIS, он не работал.
Нет, приложение уже было размещено с помощью IIS (как еще вы могли бы запустить ASP.NET заявление?) разница лишь в том, что теперь ваше приложение также полагается на права, предоставляемые хостинг-провайдерами.

Никогда не устанавливайте приложение, используя HTTP-запрос, даже если вы знаете, что там есть. Большинство поставщиков услуг хостинга сочтут это вредоносным приложением и немедленно прекратят процесс или, что еще хуже, расторгнут контракт или подписку. Решение заключается в том, что вы должны связаться с администраторами или посмотреть дополнения, представленные в их панели управления, и выбрать один из них оттуда. Они будут довольны этим, и ваши пользователи тоже получат эти услуги.


dattaprasaddhuri

Файл находится на сервере. Что я хочу, так это установить этот msi/exe-файл на клиентскую машину молча, как активный X-компонент

Afzaal Ahmad Zeeshan

Ну а браузер не позволит вам ничего устанавливать на клиентскую машину. Что вы можете сделать, так это загрузить установщик и попросить пользователя вручную запустить эту установку. Во время этого MSI должен зарегистрироваться как обработчик элементов управления ActiveX, и ваше приложение начнет работать.

Браузер не позволит вам вносить изменения ни в что на устройстве. Кроме того, серверный код остается на стороне сервера и не имеет ничего общего с клиентским.

Afzaal Ahmad Zeeshan

Кроме того, Пожалуйста, прочтите этот ответ также.

dattaprasaddhuri

@Afzaal Ahmad Zeeshan можно ли установить элемент управления Activex без вмешательства пользователя

Afzaal Ahmad Zeeshan

Вы можете создавать элементы управления ActiveX в веб-приложении, но браузер всегда будет запрашивать у пользователя разрешение на выполнение внутреннего кода.

dattaprasaddhuri

@Afzaal Ahmad Zeeshan Спасибо

Afzaal Ahmad Zeeshan

Не берите в голову.