msinfo32.exe无法在共享点页面ASP.net上收集信息

时间:2015-05-12 16:10:54

标签: c# asp.net sharepoint msinfo32

我正在我的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]

我做错了,是否有设置在sharepoint上启用以运行msinfo32?

我的操作系统已启用WMI。

2 个答案:

答案 0 :(得分:1)

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

SPSecurity.RunWithElevatedPrivileges(delegate()
{
    //Your code goes here
});

答案 1 :(得分:0)

我去了我的调试文件夹运行控制台应用程序的目录 这是我做的,它的工作.. 将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;