我使用下面的代码行将open exe复制到另一个文件夹(Windows启动)
File.Copy(ownPath, Path.Combine(startupFolder, "Player.exe"));
但问题是我的exe大小是16 MB并且复制了12KB。那么如果exe是开放的,我怎么能完全复制它。我check here on stack它说如果exe是开放的那么它就不能被完全复制。因此,当应用程序第一次运行时,我必须将exe添加到启动文件夹中。
答案 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。否则你会短暂地获得一个控制台窗口。