問題タブ [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では使用できないことも示しています。
Q:ソースとターゲットが同じボリューム上にない場合、再起動時にファイルを移動して既存のファイルを上書きするにはどうすればよいですか?
privilege - MoveFileEx() が使用する特権
MoveFileEx() を呼び出し、dwFlags に MOVEFILE_DELAY_UNTIL_REBOOT を使用する場合。ファイルの実際の移動中に、どの権限が使用されますか?
ありがとうカズオ!
c# - MoveFileEx を使用して削除するファイルをマークする
MoveFileEx を Windows 7 x64 で正しく動作させるのに少し問題があります。
アプリケーションを管理者として実行し、次の再起動時にファイルを削除するようにマークしていますが、再起動後、どのファイルも削除されていません。
上記の偉業を達成するために、私は以下を使用しています:
マーキング プロセスが複数のファイルに対して実行されていることを確認できますが、マシンの再起動後に削除機能が実行されない理由がわかりません。
この分野でのご支援をいただければ幸いです。
ありがとうございました。
winapi - 再帰的な MoveFile/CopyFile
私はコンソール プログラムに取り組んでおり、MoveFile
/CopyFile
を使用して、ファイルとディレクトリを移動およびコピーできるようにする必要があります (おそらくボリューム間で)。もちろん問題は、ディレクトリを別のボリュームにコピーまたは移動することは、再帰的ではないため、前述の機能では機能しないことです。
SHFileOperation
これはコンソール アプリであり、進行状況表示 ( MoveFileWithProgress
/ CopyFileEx
)を許可するバリエーションをSHFileOperation
使用しており、コンソールの代わりに進行状況を表示するために GUI を使用しているため、実行できません。
を使用することを検討しましたが、再帰的FindNextFile
に使用するコードの例を見つけることができませんでした。(Move|Copy)File
FindNextFile
これを行う簡単な方法はありますか、それとも車輪の再発明に頼る必要がありますか?
c++ - MoveFile()は機能しますが、エラー2を返します(ファイルが見つかりません)
私は関数Movefile()(C)を使用しています。ファイルがソースフォルダーから宛先に移動されたことがわかります(MoveFileが成功したことを意味します)が、GetLastError()を実行すると、エラー番号が表示されます。2(ERROR_FILE_NOT_FOUND)。
何が問題になる可能性がありますか?
コードは次のとおりです。
winapi - ReplaceFile Windows API は便利な機能のみですか?
Windows APIはReplaceFile
便利な関数だけですか?それとも、複数の呼び出しを使用してコード化できる以上のことを実現しMoveFileEx
ますか?
私は現在、私が必要な状況にあります
- 一時ファイルを書き込んでから
- この一時ファイルの名前を元のファイル名に変更し、元のファイルを置き換える可能性があります。
(バックアップなどは必要ないため)MoveFileEx
withを使用することを考えましたが、 APIもあります。MOVEFILE_REPLACE_EXISTING
ReplaceFile
これは私に考えさせました:ReplaceFile
実際には何か特別なことをしますか、それとも単なる便利なラッパーMoveFile(Ex)
ですか?
c# - 再起動時に空でないフォルダーを削除する
ドメインからユーザーを削除した後、フォルダー内のユーザー プロファイル フォルダーを削除しようとしてUsers
います。問題は、フォルダがシステムによって使用されている場合があることです。
MOVEFILE_DELAY_UNTIL_REBOOT
withMoveFileEx
を使用すると、空のフォルダーのみが削除されるという問題があります。
dwFlagsがMOVEFILE_DELAY_UNTIL_REBOOTを指定し、lpNewFileNameがNULLの場合、MoveFileExは、システムの再起動時に削除されるlpExistingFileNameファイルを登録します。lpExistingFileNameがディレクトリを参照している場合、ディレクトリが空の場合にのみ、システムは再起動時にディレクトリを削除します。
使用中のファイルが含まれている空でないフォルダを削除する正しい方法は何ですか?
Michel の回答に基づく簡単なテスト プログラムを次に示します。期待どおりに動作します。
Directory.EnumerateFiles
これをandを使用して 2 つのループで実行すると、フォルダ内のファイルの前にフォルダがリストされるため、削除は失敗しますDirectory.EnumerateDirectories
。Directory.EnumerateFileSystemEntries
delphi - ソース ディレクトリからすべてを新しいディレクトリ Delphi EX7 にコピーします
私の最終目標は、関連するすべてのファイルをあるフォルダーから別のフォルダーにコピーすることです。たとえば、 がありC:\Users\Tool\Desktop\test\oldStuff
ます。フォルダoldStuff
には、いくつかのmp3、mp4、およびtxtファイルだけでなく、さらに多くのフォルダがあります。
ここで、1 GB より小さいすべてのmp4C:\Users\Tool\Desktop\test\New_Stuff_Less_than_a_Gig
ファイルを にコピーし、1 GB より大きい.mp4C:\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 でマークすることを計画しています。
3 つの質問があります。
特定のファイルの Windows レジストリからレコードを削除する機能 (使用できる) はありますか?
ケース: システムの再起動時にファイルを削除するようにマークし、それを操作して正常に削除します-その後、レジストリにこのレコードは必要なく、正常に削除されたファイルのレコードを保持したくありません. (おそらく数百万が正常に削除され、5-10 が失敗しました)。
そのような機能 (質問 '1' で言及) がない場合、私のレジストリに何百万もの不要なレコードがあると、どのくらいの問題になるでしょうか?
質問 2 の答えが非常に否定的である場合、これに対する他の解決策はありますか?