如何以 32 位运行进程(应用程序不适用于 32 位操作系统)

本文关键字:不适用 适用于 应用程序 操作系统 进程 运行 | 更新日期: 2023-09-27 18:36:30

First - 我是这个网站的新手,所以我很小心乞讨。

我的流程有问题。我想以 32 - 64 位进程启动它,而不仅仅是 64 位。我尝试在 AnyCPU、x64、x86 上的 Visual Studia 2010 中更改调试配置,但它不起作用。

我的代码在这里:

public static void startMinecraft(bool mode, string ramMax, string ramMin, string username, string sessionID, bool debug, string javafold, string mainfolder, string server)
        {
            string appPath = Path.GetDirectoryName(Application.ExecutablePath) + @"'";
            string appData = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + @"'";
            Process proc = new Process();
            proc.StartInfo.UseShellExecute = false;
            if (Environment.Is64BitProcess)
            {
                MessageBox.Show("yes"); // it is always yes
            }
            else 
            {
                MessageBox.Show("no");
            }
            if (proc.StartInfo.EnvironmentVariables.ContainsKey("APPDATA"))
                proc.StartInfo.EnvironmentVariables["APPDATA"] = @appData + mainfolder + "''" + server;
            else
                proc.StartInfo.EnvironmentVariables.Add("APPDATA", @appData + mainfolder + "''" + server);
            if (debug == true)
            {
                proc.StartInfo.FileName = @appData + javafold + "''jre''bin''java.exe";
            }
            else
            {
                proc.StartInfo.FileName = @appData + javafold + "''jre''bin''javaw.exe";
            }
            //Online and offline modes
            if (mode == true)
            {
                proc.StartInfo.Arguments = "-cp '"" + appData + mainfolder + "/.minecraft/bin/minecraft.jar;" + appData + mainfolder + "/.minecraft/bin/lwjgl.jar;" + appData + mainfolder + "/.minecraft/bin/lwjgl_util.jar;" + appData + mainfolder + "/.minecraft/bin/jinput.jar;'" ";
                proc.StartInfo.Arguments += "'"-Djava.library.path=" + appData + mainfolder + "/.minecraft/bin/natives'" -Xmx" + ramMax + "M -Xms" + ramMin + "M net.minecraft.client.Minecraft " + username + " " + sessionID;
            }
            else
            {
                proc.StartInfo.Arguments = "-cp '"" + appData + mainfolder + "''" + server + "''.minecraft''bin''minecraft.jar;" + appData + mainfolder + "''" + server + "''.minecraft''bin''lwjgl.jar;" + appData + mainfolder + "''" + server + "''.minecraft''bin''lwjgl_util.jar;" + appData + mainfolder + "''" + server + "''.minecraft''bin''jinput.jar;'" ";
                proc.StartInfo.Arguments += "'"-Djava.library.path=" + appData + mainfolder + "''" + server + "''.minecraft''bin''natives'" -Xmx" + ramMax + "M -Xms" + ramMin + "M -XX:MaxPermSize=256m net.minecraft.client.Minecraft " + username;
            }
            proc.Start();
        }

此过程完美运行,但仅在 64 位操作系统平台上运行。

32 位操作系统上的错误是:

System.ComponentModel.Win32Exception (0x80004005): The specified executable is not a valid application for this OS platform.
   at System.Diagnostics.Process.StartWithCreateProcess(ProcessStartInfo startInfo)
   at System.Diagnostics.Process.Start()
   at WindowsFormsApplication1.Form1.startMinecraft(Boolean mode, String ramMax, String ramMin, String username, String sessionID, Boolean debug, String javafold, String mainfolder, String server)
   at WindowsFormsApplication1.Form1.button1_Click(Object sender, EventArgs e)
   at System.Windows.Forms.Control.OnClick(EventArgs e)
   at System.Windows.Forms.Button.OnClick(EventArgs e)
   at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent) etc...

感谢大家的帮助!对不起我的英语错误。

如何以 32 位运行进程(应用程序不适用于 32 位操作系统)

您应该考虑制作 32 位 exe,这将适用于 32 和 64

如果我正确解释堆栈跟踪,问题不在于您的应用程序,而在于您尝试执行的应用程序。因此,您的java.exe和/或javaw.exe似乎仅在 64 位上运行。