我正在我的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。
答案 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;