在.NET中有什么替代方法可以在命令行中运行命令吗?

时间:2010-09-29 16:24:55

标签: .net windows-7 process console command-prompt

my previous question中,我详述了遇到的问题。

其中一个解决方案是模拟用户在提示中键入命令。我不知道如何在.NET中执行此操作,因为通常的方法是使用导致错误的System.Diagnostics.Process

我想知道该课程是否有其他选择?使用该类并以用户身份键入命令有什么区别?

4 个答案:

答案 0 :(得分:2)

不确定它与命令提示符有什么关系。但是,通过使用相同的命令行解释器,您将获得与从命令提示符获得的完全相同的行为。使用cmd.exe作为进程文件名,/ c powercfg.exe作为参数。

答案 1 :(得分:1)

不是我知道的。

如果是这样,它看起来不会解决您的问题(您的问题似乎是,当以编程方式启动然后手动启动时,正在启动的程序具有不同的环境变量)。

答案 2 :(得分:0)

看起来DLL正在运行时动态加载。您可以在命令行中找到PATH变量的设置,然后使用“control panel \ system \ advance \?environment?”设置它。或调用setEnv或任何API(我认为我可能不得不在最后一次时调用win32调用)来更改代码中的环境变量。

请记住,在使用系统EnvVars时,只有在首次运行时才会读取它们,因此您通常必须重新启动应用才能获得新设置。

答案 3 :(得分:0)

为什么不通过命令行调用exe:

using (var process = new Process
{
    StartInfo = new ProcessStartInfo
    {
         FileName = "cmd.exe",
         Arguments = "/C powercfg.exe",
         RedirectStandardOutput = true,
         UseShellExecute = false,
    }
})
{
    process.Start();
    process.WaitForExit();
}

这有点不寻常,但应该有用......