关闭从 USB 运行的应用程序后延迟移除 U 盘



>我在 C# VS2005 中有这个程序,用于从 U 盘复制文件和将文件复制到 U 盘

由于它将在只有触摸屏的嵌入式Windows中使用,因此它以"自动运行.exe"的形式从USB加载(如"检测到的USB驱动器"对话框所示执行(,因此不允许安装从硬盘驱动器运行。

我无法弹出正在使用的驱动器,因为它是从那里运行的,有没有办法让 exe 结束表单,然后在所有执行结束后执行我的"RemoveDrive"功能?

这是我的代码:

  private void button2_Click_1(object sender, EventArgs e)
    {
        this.Close();
        System.Threading.Thread.Sleep(3000);
        RemoveDriveTools.RemoveDrive(discz);
    }

这得到与程序仍然打开相同的错误

">

discz"的盘符驱动器分配了"F:">

RemoveDriveTools.RemoveDrive

是弹出驱动器的 metod。

感谢您的建议。

这是我的建议:

这不能在代码中完成,因为在程序执行时,系统被锁定。 我推荐以下两种方法之一来解决此问题:

  1. 启动带或不带标志的程序。一个。 当程序在没有标志的情况下启动时,它会将自身复制到拇指驱动器(和任何必需的 DLL(之外的另一个目录(想想临时目录(,并在启用标志的情况下启动该程序的版本。b. 启用标志的版本将运行,并且由于标志将知道它没有从驱动器运行。

  2. 正常从拇指驱动器运行。 程序退出后,启动一个批处理文件,该文件将:一个。 暂停以确保程序真正退出。b. 运行命令行以关闭拇指驱动器。 (安全地从批处理文件中删除 USB?

选择选项 1,它更容易。 这将强制程序从临时区域而不是拇指驱动器运行的"正常"执行。

最新更新