的Process.Start(字符串); - 开始处理几秒钟。 C#

时间:2012-07-10 16:56:45

标签: c# process process.start

我有一个Windows 7(x86)和我的控制台应用程序(C#)。 在我的应用程序中,我需要运行一个新进程。 申请仅包括:

Process.Start(filename);

当应用程序运行时,它会创建一个新进程,但是他会在几秒钟后销毁,甚至不会被初始化。 在调试中我看到这个信息:

"proc.MainModule" threw exception "System.ComponentModel.Win32Exception"
NativeErrorCode = 299
ExitCode = -3

如果我在Windows上运行所需的应用程序 - 它会运行。 拜托,有人可以帮助我吗?

当它作为管理员运行时,它有相同的错误。

关于ReadProcessMemory or WriteProcessMemory didn't complete successfullyProcess.Start();之后我什么都不做 我在var proc = Process.Start(filename);之后的调试中可以看到此错误。

AOgame.exe - 是我的可执行应用程序。这是游戏Allods的exe文件。 当我尝试执行其他应用程序时,他们开始很好。我认为这是AOgame.exe的问题。但我不知道如何删除错误。

在AOgame.exe的属性中没有参数。

我认为这是反作弊保护。但是,如果我尝试从cmd-console执行它,它将起作用。

是!我找到了解决方案首先 - 创建一个批处理文件,它将执行AOgame.exe然后 - 从我的应用程序执行批处理文件 这是一个奇怪的解决方案,但它有效:D

4 个答案:

答案 0 :(得分:0)

也许这个过程需要工作目录中的一些文件?...

尝试设置工作目录:

ProcessStartInfo processInfo = new ProcessStartInfo("foo.exe");
processInfo.WorkingDirectory = @"C:\bar";

Process.Start(processInfo);

答案 1 :(得分:0)

我建议您使用ProcessStartInfo实例,并将UseShellExecute设置为false,如下所示:

ProcessStartInfo processInfo = new ProcessStartInfo("AOGame.exe");
processInfo.UseShellExecute = false;

Process.Start(processInfo);

这会强制启动由可执行文件中提供的进程名直接处理,而不是依赖于shell / helper例程。如果您可以提供有关AOGame.exe内部工作的更多详细信息,那么可能会有所帮助。

答案 2 :(得分:0)

如果你的windows startmenu中有一个工作链接,你可以试试这个:

Process.Start("explorer.exe", @"C:\ProgramData\Microsoft\Windows\Start Menu\Programs\foo\bar.lnk");

......我不放弃:-D

答案 3 :(得分:0)

我已经做了一段时间了。 我发现调试器实际上并不了解运行进程的字符串 我的意思是你不能这样做

Process.start(path);

代替您可以使用此代码:

       string pathak="AOgame.exe";
       string rty = pathak.Remove(pathak.Length - 5);
       string path = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "\\";
       Process.Start(path + rty + "exe");

希望这对你有所帮助。