在C#中使用PowerShell运行命令时拒绝访问
本文关键字:运行 命令 拒绝访问 PowerShell | 更新日期: 2023-09-27 18:21:04
我正试图编写一个程序,通过单击按钮使用Msinfo32实用程序导出系统信息。我在C#中使用Powershell类来执行此操作。现在,问题是编译后的应用程序已经设置为使用管理员权限运行。但是,当实用程序开始保存到桌面时,我仍然会收到拒绝访问错误。以下是源代码:-
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Management.Automation;
using System.IO;
using System.Management.Automation.Runspaces;
using System.Collections.ObjectModel;
namespace Diagnostic_Tool
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
progressBar1.Value = 10;
Runspace Run = RunspaceFactory.CreateRunspace();
Run.Open();
progressBar1.Value = 30;
Pipeline pipeline = Run.CreatePipeline();
progressBar1.Value = 50;
Command Msinfo32 = new Command("Msinfo32.exe");
string path = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory);
Msinfo32.Parameters.Add("/nfo");
Msinfo32.Parameters.Add(path);
progressBar1.Value = 70;
pipeline.Commands.Add(Msinfo32);
pipeline.Invoke();
pipeline.Stop();
Run.Close();
progressBar1.Value = 100;
MessageBox.Show("The Task Has Completed Successfully");
}
}
}
谁能告诉我出了什么问题吗?
您的访问被拒绝,因为您告诉msinfo将数据直接写入Desktop目录本身,而不是文件。
您的"path"变量包含Desktop目录的名称。您需要将文件名附加到此参数。例如:
OLD: MSinfo32.Parameters.add(path)
NEW: MSinfo32.Parameters.add(path + "''foo.txt")