MS Access Tips/Sample and VBA and Blog customize etc...

ファイルの「ブロックの解除」をVBAから一括でする

ネット経由でダウンロードしたファイルを実行しようとしたり、開こうとしたときに、「安全でない可能性があります。」というような警告がでることがあります。

ファイルのプロパティを開いて「プロックの解除」ボタンをクリックすれば次回からは表示されなくなります。が、ダウンロードしたファイルが複数あるときは、ひとつずつ引いて解除していくのも結構面倒です。

WEB検索すれば、一括で解除する方法も見つかりますが、これをVBAで一括でする方法を紹介します。 

VBAでブロックの一括解除

難易度:

概要

WebブラウザでダウンロードしたファイルにはNTFSの代替データ・ストリームにZoneIdというセキュリティ情報を付加されてます。そうすると上記のような警告がでます。

解除するには、ファイルのプロパティの「ブロックの解除」ボタンをクリックします。

ファイルのプロパティを開いて「ブロックの解除」ボタンをクリック

詳細は下記を参照してください。

streamsコマンドでNTFSの代替データ・ストリーム情報を表示/削除する - @IT

これを1つずつプロパティを開かずに一括で解除する方法は、上記のリンク先にも紹介されています。

簡単に説明すると streams.exe を入手して、コマンドラインからファイル名またはフォルダー名を指定して実行すればいいということです。

VBA関数

VBAから解除するとはいっても、VBAだけでは難しいので、上記の streamsコマンドをVBAから実行することにします。

まずは、下記のサイトから Streams.zip をダウンロードして解凍します。

Streamsコマンド(TechNet中のWindows Sysinternalsサイト)

解凍した streams.exe をパスの通ったフォルダーに入れておきます。Windowsフォルダーなどでいいでしょう。

標準モジュールに下記のコードをコピーします。

コマンドの標準出力を受け取って、どのファイルを処理したかを取得して、返り値してと返すために、WScript.Shell を使用しました。

使用例

拍手する

Leave a reply






Trackbacks

trackback URL
http://hatenachips.blog34.fc2.com/tb.php/407-d536187c
該当の記事は見つかりませんでした。