问题标签 [movefileex]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
winapi - 带有 MOVEFILE_DELAY_UNTIL_REBOOT 的 MoveFileEx 删除而不是移动
我有一个自动更新系统,可以在重新启动时替换我现有的程序文件。(可以说,这是一个非常复杂的程序,包含许多驱动程序、服务和用户级模块。真的没有其他办法。相信我。)
函数 MoveFileEx 与 MOVEFILE_DELAY_UNTIL_REBOOT 一起使用来设置此文件替换。我发现它正常工作。但是,如果源文件和目标文件位于不同的驱动器上,则会删除目标文件但不会移动源文件。结果是当用户在不同于系统分区的驱动器上安装软件时,更新会删除产品文件而不是更新它们。
现在,我在 MoveFileEx 的文档中看到 MOVEFILE_COPY_ALLOWED 应该在将文件从一个卷移动到另一个卷时使用。但它也表示该标志不能与 MOVEFILE_DELAY_UNTIL_REBOOT 一起使用。
问:当源和目标不在同一个卷上时,如何在重新启动时移动文件,覆盖现有文件?
privilege - MoveFileEx() 使用的权限
当调用 MoveFileEx() 并为 dwFlags 使用 MOVEFILE_DELAY_UNTIL_REBOOT 时。在文件的实际移动过程中,它使用什么权限?
谢谢加佐!
c# - 使用 MoveFileEx 标记要删除的文件
我在让 MoveFileEx 在 Windows 7 x64 中正常工作时遇到了一些麻烦。
我以管理员身份运行我的应用程序,将文件标记为在下次重新启动时删除,但重新启动后发现没有文件被删除。
我正在使用以下内容来完成上述壮举:
我可以验证标记过程正在多个文件上完成,只是无法弄清楚为什么在机器重新启动后它没有执行删除功能。
在这方面的任何帮助将不胜感激。
谢谢你。
winapi - 递归移动文件/复制文件
我正在开发一个控制台程序,需要使用MoveFile
/CopyFile
来允许移动和复制文件和目录(可能跨卷)。当然,问题在于将目录复制或移动到另一个卷不适用于上述功能,因为它们不是递归的。
SHFileOperation
不会这样做,因为这是一个控制台应用程序,我正在使用允许进度显示 ( MoveFileWithProgress
/ CopyFileEx
) 的变体,并SHFileOperation
使用 GUI 而不是控制台来显示进度。
我考虑过使用FindNextFile
,但即便如此,我也找不到任何可以递归(Move|Copy)File
使用FindNextFile
或以其他方式使用的代码示例——这有点令人费解,因为这个问题之前肯定已经出现过。
有没有一种简单的方法可以做到这一点,还是我必须求助于重新发明轮子?
c++ - MoveFile() Works, but returns error 2 (file not found)
I'm using the function Movefile() (in C). I can see the file moved from the source folder to the destination (means the MoveFile success) but when I do GetLastError() I get error no. 2 (ERROR_FILE_NOT_FOUND).
What can be the problem?
The code is:
winapi - ReplaceFile Windows API 只是一个便利功能吗?
ReplaceFile
Windows API 只是一个便利功能,还是它实现的功能超出了可以通过多次调用来编码的功能MoveFileEx
?
我目前处于需要的情况
- 写一个临时文件,然后
- 将此临时文件重命名为原始文件名,可能替换原始文件。
我考虑过使用MoveFileEx
with MOVEFILE_REPLACE_EXISTING
(因为我不需要备份或任何东西),但也有ReplaceFile
API,因为它在Alternatives to TxF下提到。
这让我想到:ReplaceFile
真的有什么特别的,还是只是一个方便的包装MoveFile(Ex)
?
c# - 重启时删除非空文件夹
Users
从域中删除用户后,我试图删除文件夹中的用户配置文件文件夹。问题是有时系统可能正在使用该文件夹。
问题是使用MOVEFILE_DELAY_UNTIL_REBOOT
withMoveFileEx
只会删除空文件夹。
如果dwFlags指定MOVEFILE_DELAY_UNTIL_REBOOT并且lpNewFileName为NULL,则 MoveFileEx 注册lpExistingFileName文件以在系统重新启动时删除。如果lpExistingFileName引用一个目录,则系统仅在目录为空时才会在重新启动时删除该目录。
删除其中包含正在使用的文件的非空文件夹的正确方法是什么?
这是一个基于 Michel 答案的简单测试程序,它按预期工作。
我在两个循环中执行此操作Directory.EnumerateFiles
,Directory.EnumerateDirectories
因为Directory.EnumerateFileSystemEntries
将在文件夹中的文件之前列出文件夹,因此删除将失败。
c++ - MoveFileEx - 返回 GetLastError(): 17
我正在使用 MoveFileEx 移动文件。根据用户输入的内容,文件移动的位置可能位于单独的硬盘驱动器上。在这种情况下,MoveFileEx 失败,GetLastError 报告错误 ID 17,即:
ERROR_NOT_SAME_DEVICE 17 (0x11) 系统无法将文件移动到不同的磁盘驱动器。( http://msdn.microsoft.com/en-us/library/windows/desktop/ms681382(v=vs.85).aspx )
那么,在 VC++ 中,我将如何处理这样的情况,并移动文件,即使它位于单独的硬盘驱动器上?
我正在使用的代码在这里:https://gist.github.com/Whitetigerswt/9180030(虽然我认为它不相关,但除了将文件移动到另一个硬盘驱动器外,一切都很好。)
delphi - 将源目录中的所有内容复制到新目录 Delphi EX7
我的最终目标是将所有相关文件从一个文件夹复制到另一个文件夹。所以例如我们有C:\Users\Tool\Desktop\test\oldStuff
。在文件夹oldStuff
中,我们有更多文件夹以及一些mp3、mp4和txt文件。
现在我想做的是将所有小于 GB的mp4文件复制到.mp4C:\Users\Tool\Desktop\test\New_Stuff_Less_than_a_Gig
文件,将大于 GB的.mp4文件复制到.C:\Users\Tool\Desktop\test\New_STuff_Bigger_than_a_Gig
我虽然这很容易,但我错了。到目前为止有这个,暂时不用担心文件类型所以就做了*.*
这将复制所选文件夹中的任何内容,但不会从所选文件夹中的文件夹中复制任何内容。例如,如果我们拥有C:\Users\Tool\Desktop\test\oldStuff\movie.mp4
它将复制Movie.mp4
文件,但如果我们拥有C:\Users\Tool\Desktop\test\oldStuff\movies\Movie.mp4
它将不会复制Movie.mp4
文件。我虽然我可以做这样的事情
甚至只是
但它没有复制任何东西。
windows - MoveFileEx 添加后从 Windows 注册表中删除记录
在我的软件中,我MoveFileEx
用来标记要删除的文件,以便在系统重新启动时删除。
在这种情况下,由于某些原因我无法使用我的软件删除文件(例如它被其他软件锁定)。
但我假设系统可能会崩溃,或者其他意外情况可能会重新启动系统,我希望能够删除文件或将其标记为删除MoveFileEx
。
现在我打算在软件开始使用后立即用 MoveFileEx 标记文件。
我有三个问题:
是否有一个功能(我可以使用)从 Windows regestry 中删除特定文件的记录?
情况是:我将文件标记为在系统重新启动时删除,使用它并成功删除它 - 然后我的注册表中不需要此记录,我不希望有成功删除文件的记录。(可能数百万成功删除和 5-10 不成功)。
如果没有这样的功能(在问题“1”中提到),在我的注册表中有数百万不需要的记录会有多大的问题?
如果问题 2 的答案是否定的,还有其他解决方案吗?