2010-09-29 31 views
0

my previous question我详细说明了我遇到的问题。在.NET中用于在命令行中运行命令还有其他选择吗?

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

我想知道这个班是否有其他选择?使用该类并将该命令作为用户键入的区别是什么?

+0

您将得到更好的服务,以了解真正的问题在于解决问题,而不是寻找疯狂的黑客和变通办法。一方面,当你不知道什么或者什么是什么时,很难解决某些问题。你只是在刺痛黑暗。 – dthorpe 2010-09-29 16:29:48

+0

@dthorpe我不会,如果我可以 – 2010-09-29 16:47:27

+0

那么,不要放弃你刚才的问题。你只在4小时前问过这个问题。您至少需要24小时才能完全获得您的全球专业技术人员专家队伍的全部权益。 ;> – dthorpe 2010-09-29 17:19:33

回答

1

不是我所知道的。

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

2

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

+0

它不能解决我的原始问题,但它是值得一试的 – 2010-09-29 16:45:59

0

它看起来像在运行时动态加载DLL。您可以在命令行中找到PATH变量的设置,然后使用“控制面板\系统\高级\?环境?”进行设置。或者调用setEnv或者其他任何API(当我最后一次调用win32调用的时候,我可能不得不调用它)来更改代码中的环境变量。

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

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(); 
} 

这是一个有点不寻常,但它应该工作....

+0

汉斯打败了它.... – AnthonyLambert 2010-09-29 16:37:30

+0

对不起如果示例代码没有按原样工作,但是我从你的原始问题复制了你的代码......并且我将这些参数放在了文件名中;-) – AnthonyLambert 2010-09-29 16:41:31

+0

我改正了它,因为文件名中的参数不' t工作,但它缺少括号 – 2010-09-29 16:45:16