C# 在C中使用命令提示符#
我正在从事一个从服务器远程接收命令的项目,但在本地使用命令提示符时遇到了一个问题。一旦我让它在本地工作,那么我将转向远程通信 问题:C# 在C中使用命令提示符#,c#,cmd,.net-4.5,C#,Cmd,.net 4.5,我正在从事一个从服务器远程接收命令的项目,但在本地使用命令提示符时遇到了一个问题。一旦我让它在本地工作,那么我将转向远程通信 问题: 我必须完全隐藏控制台,当客户端使用命令行时,客户端不能看到任何响应,但它将显示实例的控制台,然后将其隐藏 我必须使用c#向cmd.exe发送命令,并在c#中接收结果。我通过设置标准输出以一种方式完成了它。。。输入为true 命令不起作用。例如,D:应该将目录更改为D,它确实更改了,但是在这之后,如果我们使用dir查看D中的目录,它不会显示相应的目录 这是我的密码:
cmd.exe
发送命令,并在c#中接收结果。我通过设置标准输出以一种方式完成了它。。。输入为trueD:
应该将目录更改为D,它确实更改了,但是在这之后,如果我们使用dir
查看D中的目录,它不会显示相应的目录Process process = new Process();
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.WindowStyle = ProcessWindowStyle.Hidden;
startInfo.FileName = "cmd.exe";
startInfo.Arguments = "/C " + textBoxInputCommand.Text + " >> " + " system";
process.StartInfo = startInfo;
process.Start();
ProcessStartInfo procStartInfo = new ProcessStartInfo("cmd", "/c " + textBoxInputCommand.Text);
procStartInfo.WorkingDirectory = @"c:\";
procStartInfo.RedirectStandardOutput = true;
procStartInfo.UseShellExecute = true;
procStartInfo.UseShellExecute = false;
Process proc = new Process();
proc.StartInfo = procStartInfo;
proc.Start();
string result = proc.StandardOutput.ReadToEnd();
richTextBoxCommandOutput.Text += result;
第二种方法
Process process = new Process();
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.WindowStyle = ProcessWindowStyle.Hidden;
startInfo.FileName = "cmd.exe";
startInfo.Arguments = "/C " + textBoxInputCommand.Text + " >> " + " system";
process.StartInfo = startInfo;
process.Start();
ProcessStartInfo procStartInfo = new ProcessStartInfo("cmd", "/c " + textBoxInputCommand.Text);
procStartInfo.WorkingDirectory = @"c:\";
procStartInfo.RedirectStandardOutput = true;
procStartInfo.UseShellExecute = true;
procStartInfo.UseShellExecute = false;
Process proc = new Process();
proc.StartInfo = procStartInfo;
proc.Start();
string result = proc.StandardOutput.ReadToEnd();
richTextBoxCommandOutput.Text += result;
我希望程序以管理员身份运行,因为它生成的exe在从C驱动器运行时不运行命令
cmd
来运行命令,而是将客户端传递的命令写入.bat
文件从程序中执行.bat.
文件这可能会隐藏命令提示窗口process.outputDataReceived
事件处理程序对输出执行任何操作runas
命令。它相当于Linux
中的sudo
命令。这是一段代码,可能会对你有所帮助
var process = new Process();
var startinfo = new ProcessStartInfo(@"c:\users\Shashwat\Desktop\test.bat");
startinfo.RedirectStandardOutput = true;
startinfo.UseShellExecute = false;
process.StartInfo = startinfo;
process.OutputDataRecieved += DoSomething;
process.Start();
process.BeginOutputReadLine();
process.WaitForExit();
//Event Handler
public void DoSomething(object sener, DataReceivedEventArgs args)
{
//Do something
}
希望对你有帮助通过添加以下代码行,可以隐藏命令提示窗口:
startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
或者根本不创建它
startInfo.CreateNoWindow = true;
以下是一些奖励解决方案:
执行
cmd/cd:
将cmd.exe实例的工作目录更改为d:。但该实例退出,下次运行cmd.exe时,该目录将与程序的当前工作目录相同。哦,顺便说一下:除非运行Windows 98,否则没有“DOS提示符”。这是Windows命令提示符。DOS在Windows中已经15年没有存在了。当Using shell选项设置为true时,runas不起作用。是否有其他方法将安装程序添加到注册表请向我说明,您是希望cmd命令以管理员权限运行,还是希望c#程序在安装时以管理员权限运行。绝对不是我的cmd,我希望c#程序以管理员身份运行