一个open exe文件没有完全复制

时间:2016-10-20 04:44:36

标签: c#

我使用下面的代码行将open exe复制到另一个文件夹(Windows启动)

File.Copy(ownPath, Path.Combine(startupFolder, "Player.exe"));

但问题是我的exe大小是16 MB并且复制了12KB。那么如果exe是开放的,我怎么能完全复制它。我check here on stack它说如果exe是开放的那么它就不能被完全复制。因此,当应用程序第一次运行时,我必须将exe添加到启动文件夹中。

1 个答案:

答案 0 :(得分:2)

这里的答案建议使用影子复制: How to copy a file while it is being used by other process

但我不确定影子副本是否始终可用。

您是否尝试在Windows Startup上启动该程序?如果是这样,你可以这样做而无需复制: How to make an exe start at the Windows Startup

或者如果你真的需要复制,那么你可以确保程序尚未运行,如果是,请让用户先停止它: Check if a specific exe file is running

修改:

我在MSDN的注册表文档中没有提到工作目录。可能有两种解决方法: 1.如果可执行文件支持它,则可以将工作目录作为参数传递。 2.您可以尝试在注册表中使用启动器,例如cmd.exe或powershell:

  

cmd.exe / c [更改目录并启动EXE的批处理文件]

     

powershell.exe -windowstyle hidden start-process [EXE的路径] -WorkingDirectory [WorkingDir]   -windowstyle隐藏仅适用于Powershell V2。否则你会短暂地获得一个控制台窗口。