1

まず、私はこのウェブサイトの初心者なので、慎重に始めています。

プロセスに問題があります。64ビットだけでなく、32〜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 ビット OS プラットフォームでのみ機能します。

32 ビット OS でのエラーは次のとおりです。

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...

助けてくれてありがとう!そして、英語の間違いをお詫びします。

4

2 に答える 2

2

32 ビット exe を作成することを検討してください。これは 32 および 64 で動作します。

于 2013-10-22T19:37:31.537 に答える