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;
Другие вопросы по тегам