Windows XP SP2およびWindows Vistaでは、ダウンロードしたファイルのNTFSパーティションにゾーン情報が保存されるため、ファイルの "ブロックを解除"するまで特定のアプリケーションの特定のファイルがブロックされることがあります。
だから例えばあなたが何かを試すためにソースコードのZipファイルをダウンロードするならば、すべてのファイルはファイルプロパティのセキュリティ設定でこれを表示するでしょう
「このファイルは別のコンピュータから送信されたもので、このコンピュータを保護するためにブロックされている可能性があります」
「ブロック解除」ボタンと一緒に。気にしないプログラムもありますが、ブロックが解除されるまで、Visual Studioはプロジェクトをソリューションにロードすることを拒否します。
すべてのプロジェクトファイルに移動して個別にブロック解除するのはそれほど難しくありませんが、それは面倒です。また、選択した複数のファイルを同時にブロック解除できるようには見えません。
ディレクトリ内のすべてのファイルを個別に移動しなくてもブロックを解除する方法はありますか?
すべての新しいファイルに対してこれをグローバルに無効にできることは知っていますが、したくないとしましょう
.Zip
をダウンロードして解凍すると、個々のファイルは.Zip
と同じゾーンとしてマークされます。私が "ブロックされた"ファイルでいっぱいのフォルダーを持っている時はいつも、これが私がそれらを手に入れた方法です。
解凍する前に、.Zip
のUnblockボタンをクリックしてください。
PowerShellには こちら があり、このタスクを実行するUnblock-File
コマンドレットがあります。ディレクトリ内のすべてのファイルのブロックを解除するには、次のコマンドを発行します。
dir c:\mydir -Recurse | Unblock-File
それは非常に簡単です、それがちょうどインターネットからダウンロードされるときにNTFSはファイルにデータストリーム(そのID「安全でないファイル」)を付けました。
すべてのファイルに対してこのストリームを再帰的に削除します。次の手順に従います。
ストリーム-s -dディレクトリ
その後、ディレクトリ内のすべてのファイルからすべてのデータストリームを再帰的に削除します。これで、すべてのファイルのブロックが解除されました。
AlternateStreamView は、ディレクトリ内のファイル(および必要に応じてサブディレクトリ)の代替NTFSストリームをすべて一覧表示できます。 。
セキュリティブロックを削除するには、選択したファイルについて「:Zone.Identifier:$ DATA」とマークされているすべてのストリームを削除します。
この種の非常に簡単な回避策は最初の答えです。たとえば、1000個のファイルがすべてブロックされていて、それらをすべてデスクトップの新しいフォルダ(または作業中のフォルダディレクトリ)に配置するとします。それらのフォルダを右クリックし、[送信]をクリックして、オプションから[圧縮(zip形式)フォルダ]をクリックします。その後、元のファイルを削除し、.ZipフォルダとViolaを展開します。私はXP Pro SP3を使っています。Vistaでも同様に動作すると思います
ファイルのダウンロード時にブロックを無効にするには、次のレジストリキーを開きます。
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Attachments\SaveZoneInformation
SaveZoneInformationを1に変更します。
注:
別のポスターによると、安全でないファイルのフラグはNTFSデータストリームに格納されています。これが意味するのは、このデータストリームを削除する非常に簡単な方法があるということです。NTFSデータストリームをサポートしていないドライブにファイルを移動するだけです。
問題がファイルのサイズではなくファイルの数に関連していると仮定した場合、最も簡単な方法は、ファイルをFATに移動する(コピーしない)ことです。フォーマットしたドライブをNTFSドライブに戻し(ほとんどすべてのUSBメモリはFAT32でフォーマットされているため、うまく動作します)、それらのファイルを目的の場所に戻します。
私はダウンロードしたファイルのディレクトリ全体からブロックされたフラグを取り除きたいと思ったときに以前にこれをしました、そしてそれはまさに私が必要としたことをしました。
下記のレジストリスクリプトをコピーしてください。
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\*\Shell\unblockfile]
@="Unblock file"
[HKEY_CLASSES_ROOT\*\Shell\unblockfile\command]
@="cmd /c streams -d \"%1\""
[HKEY_CLASSES_ROOT\Directory\Shell\unblockallthefiles]
@="Unblock the files inside"
[HKEY_CLASSES_ROOT\Directory\Shell\unblockallthefiles\command]
@="cmd /c streams.exe -d -s \"%1\""
ファイルを保存してください。
その後、ファイルを右クリックするたびに、コンテキストメニューで[ファイルのブロック解除]を選択するか、フォルダを右クリックして[ここのファイルのブロック解除]を選択できます。
AlternateStreamViewは素晴らしいです。しかし別の方法は、ファイルを.RAR、7z、または.Zipにアーカイブすることです。オリジナルを削除してから、ファイルを再抽出してください。
同じ問題があり、ファイルのブロックを解除した方法は次のとおりです。
すべてのファイルがブロック解除されました。
私にとっては、.chm形式のMSDNマガジンの問題でしたが、ファイルの種類が問題になるとは思われません。
ZoneIDTrimmer は、これに利用できる最もユーザーフレンドリーなツールのように見えます。
私は(powershellを使用せずに)バッチ方式を探していましたが、この記事を読んだ後、この簡単な解決策を思いついたのです。
echo. > .\filename.Zip:Zone.Identifier
これはZone.Identifier
データストリームを削除するのではなく、うまく動作しているように見えるコンテンツをクリアします。
もう1つの解決策(すべてのデータストリームを消去して一時ファイルを使用する方法はこれです)
type filename.Zip > filename.Zip.tmp
move /y filename.Zip.tmp filename.Zip
私はブロックを削除するのに最適なUSB外付けハードドライブを持っている...私は小さなパーティションを作成し、それをFAT32でフォーマットしました。 :-)