process.Start 在按下按钮时导致 Win32Exception

process.Start causing Win32Exception on button push

我正在尝试在 C# 中为 WINDOWS POCKET PC 创建一个启动器应用程序,这是我所知道的唯一一种编程语言。当我尝试在同一目录中启动外部 EXE 时,它抛出 Win32Exception。

代码如下:

using System;
using System.Diagnostics;
using System.Linq;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace app
{
    public partial class SMO2010 : Form
    {
        public SMO2010()
        {
            InitializeComponent();
        }

        private void 2010Image_Click(object sender, EventArgs e)
        {

        }

        private void PM_Click(object sender, EventArgs e)
        {

        }

        private void PMLabel_ParentChanged(object sender, EventArgs e)
        {

        }

        private void P_Click(object sender, EventArgs e)
        {

        }

        private void TMLauncher_Click(object sender, EventArgs e)
        {
            string str = "TextMaker.exe";
            Process process = new Process();
            process.StartInfo.FileName = "TextMaker.exe";
            process.Start();
        }
    }
}

process.Start(); 导致 Win32Exception。这适用于 Windows Mobile 2005。

有什么建议吗?

编辑:这里是例外:

App.exe
Win32Exception

   at System.Diagnostics.Process.StartWithShellExecuteEx(ProcessStartInfo startInfo)
   at System.Diagnostics.Process.Start()
   at Launcher.Launcher_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.ButtonBase.WnProc(WM wm, Int32 wParam, Int32 lParam)
   at System.Windows.Forms.Control._InternalWnProc(WM wm, Int32 wParam, Int32 lParam)
   at Microsoft.AGL.Forms.EVL.EnterMainLoop(IntPtr hwnMain)
   at System.Windows.Forms.Application.Run(Form fm)
   at Launcher.Program.Main()

异常就不多说了。我假设这只是因为找不到应用程序 exe。 如您所知,Windows 基于 CE 5 的系统不知道当前目录,并且可执行文件的搜索路径是有限的。 尝试指定 TextMaker.exe 的完整路径,即“\Programs\TextMaker\TextMaker.exe”。

这对于从 cmd 行测试此类可执行文件非常有帮助。不幸的是,Windows CE PocketPC 没有 CLI。但是有 ITS 工具提供了一个修剪工具,可以在连接的设备(ActiveSync、WMDC)上使用它来向设备发出命令。在你的情况下,我会用 'prun "TextMaker.exe"' 进行测试,这将不起作用,然后用 'prun "\Programs\TextMaker\TextMaker.exe"' 进行测试,只要 TextMaker.exe 与 PocketPC 兼容。