1

我正在我的 Sharepoint Web 应用程序上创建一个新进程。我已经运行了与下面相同的命令,并且可以在我的操作系统上运行,但不能在我的网络应用程序上运行。我想知道为什么以及这是否可能。这是创建该过程的代码。

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]

我做错了吗,是否有设置可以在共享点上启用以运行 msinfo32?

WMI 在我的操作系统上启用。

4

2 回答 2

1

找到了答案。Sharepoint 需要提升的安全状态才能运行此命令。将代码包装在这有助于运行msinfo32.exe. 感谢 Amal Hashim 和 Method Man 的推荐

SPSecurity.RunWithElevatedPrivileges(delegate()
{
    //Your code goes here
});
于 2015-05-12T19:28:31.690 回答
0

我去了我的调试文件夹在我身边运行控制台应用程序的目录,这就是我所做的并且它工作..更改您的名称Report.txtout.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;
于 2015-05-12T16:33:52.023 回答