msinfo32.exe не может собирать информацию на странице общего ресурса ASP.net
Я создаю новый процесс в своем веб-приложении Sharepoint. Я выполнил ту же команду, что и ниже, и работает в моей ОС, но не в моем веб-приложении. Я хотел знать, почему и если это вообще возможно. Вот код, который создает процесс.
string filePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory,"report.txt");
Process proc = new Process();
proc.EnableRaisingEvents = true;
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.FileName = "msinfo32.exe";
proc.StartInfo.CreateNoWindow = false;
proc.StartInfo.Arguments = "/report " + filePath;
proc.Start();
proc.WaitForExit();
proc.Close();
Он создает файл с каждым поданным как Can't collect information
, пример:
Can't Collect Information
[Hardware Resources]
[Conflicts/Sharing]
Can't Collect Information
[DMA]
Я делаю это неправильно, есть ли настройки для включения на sharepoint для запуска msinfo32?
WMI включен в моей ОС.
2 ответа
Нашел ответ. Sharepoint требуется состояние повышенной безопасности для запуска этой команды. Обертывание кода в этом помогло запустить msinfo32.exe
, Спасибо Amal Hashim и Method Man за рекомендации этого
SPSecurity.RunWithElevatedPrivileges(delegate()
{
//Your code goes here
});
Я пошел в каталог, где в моей папке отладки запущено консольное приложение, вот что я сделал, и это работает.. измените имя своего Report.txt
в out.log
Открой out.log
файл и просто введите что-нибудь в нем.. сохранить его и закрыть его.. и запустить следующий код ниже, и вы увидите SystemInformation
всплывающее окно. добавить это в Page_Load
событие, чтобы проверить это
string filePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "out.log");
Process proc = new Process();
proc.EnableRaisingEvents = true;
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.FileName = "msinfo32.exe";
proc.StartInfo.CreateNoWindow = false;
proc.StartInfo.Arguments = "/out " + filePath;
proc.Start();
proc.WaitForExit();
proc.Close();
Я только что проверил это из моей Page_Load на моей веб-странице, и она работает как шарм... Что нужно добавить в заголовок веб-страницы, с которой вы запускаете, это следующее
using System.Diagnostics;
using System.IO;