1

Sharepoint Web アプリケーションで新しいプロセスを作成しています。以下と同じコマンドを実行しましたが、OS では動作しますが、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 を実行するために共有ポイントで有効にする設定はありますか?

OS で 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.txtましout.logout.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();     

Web ページの Page_Load からこれをテストしたところ、魅力的に機能します。起動元の Web ページのヘッダーに追加する必要があるのは次のとおりです。

using System.Diagnostics;
using System.IO;
于 2015-05-12T16:33:52.023 に答える