C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

DLファイルのブロック設定をプログラムで解除する方法

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■95037 / inTopicNo.1)  DLファイルのブロック設定をプログラムで解除する方法
  
□投稿者/ ADAX (1回)-(2020/06/17(Wed) 10:30:28)

分類:[VB.NET/VB2005 以降] 

よく、Webからダウンロードしたファイルのプロパティ画面を開くと、
「全般」タブの下の方に「セキュリティ」という項目が表示されます。
ここで「許可する」という項目のチェックを付けることにより、
Windousのセキュリティによる実行動作等のブロックが解除されます。
(昔のOSだと「ブロックの解除」だったような気がする。)

この設定をプログラムで解除する方法はありますか?
使用している言語はVB2013です。

具体的にやりたいことは、
指定したファイルに対してブロック設定がなされている場合に
このファイルのブロック解除を行う、ということです。

以上、よろしくお願いいたします。
引用返信 編集キー/
■95040 / inTopicNo.2)  Re[1]: DLファイルのブロック設定をプログラムで解除する方法
□投稿者/ 魔界の仮面弁士 (2752回)-(2020/06/17(Wed) 12:24:30)
No95037 (ADAX さん) に返信
> この設定をプログラムで解除する方法はありますか?
> 使用している言語はVB2013です。

System.IO 名前空間のクラスでは、代替データストリームの操作はサポートされていないので、
VB から直接削除する場合は、名前付きストリームを除去するために API の呼び出しが必要になります。
DeleteFile("C:\hage\hige.zip:Zone.Identifier")


しかし今回の場合は、VB ではなく PowerShell を使って
Unblock-File -Path C:\hage\hige.zip
を投げるのが手っ取り早いかと思います。
PowerShell なら、フォルダー内のファイルに対して一括処理するのも簡単です。

あるいは、VB から Process.Start メソッドで Powershell.exe を呼ぶという手もありますね。
引用返信 編集キー/
■95042 / inTopicNo.3)  Re[2]: DLファイルのブロック設定をプログラムで解除する方法
□投稿者/ ADAX (2回)-(2020/06/17(Wed) 15:32:56)
ありがとうございます。
PowerShellの場合、ウイルスチェックソフトに引っかかるようなことはないでしょうか?
(使用する環境の中に、上記理由でバッチファイルのプロセス呼び出しがNGの所があったりします。)

APIも試してみようと思いますが、
DeleteFile関数の定義の部分はどのように書けばよいのでしょうか?
(DllImportみたいなものでしょうか?)
引用返信 編集キー/
■95044 / inTopicNo.4)  Re[3]: DLファイルのブロック設定をプログラムで解除する方法
□投稿者/ 魔界の仮面弁士 (2753回)-(2020/06/17(Wed) 17:42:31)
No95042 (ADAX さん) に返信
> PowerShellの場合、ウイルスチェックソフトに引っかかるようなことはないでしょうか?

.ps1 ファイルは、既定の実行ポリシーでは実行できないようになっているかと思います。
PowerShell.exe の引数に、直接 Unblock-File のコマンドレットを書く方法なら呼び出せるかと思います。


> (使用する環境の中に、上記理由でバッチファイルのプロセス呼び出しがNGの所があったりします。)

セキュリティ上の動作は千差万別なので、一概には言えませんね。
実際の環境でご確認頂き、問題があればセキュリティ担当者とご相談ください。


ファイルダイアログでの指定なしに、ファイルにアクセスしようとすることで
ブロック対象になるようなケースもありますし、
特定の API を呼び出した場合に危険と判断されるようなケースもあります。


バッチファイルすなわち .cmd (あるいは .bat) は既定で実行可能ですが、
これもセキュリティチェックでブロックされることは確かにあるでしょう。

しかしそれは exe であっても同じことです。見知らぬ exe は実行できぬよう
既定でブロックされるようになっていることもあるでしょうから、そうした場合は
除外用のホワイトリストに入れるなどしてみてください。


> DeleteFile関数の定義の部分はどのように書けばよいのでしょうか?
> (DllImportみたいなものでしょうか?)
VB ですよね。DllImport 属性でも良いですし、Declare ステートメントでも構いません。
宣言の仕方が分からなければ、 pinvoke.net のサンプルが参考になるでしょう。
引用返信 編集キー/

このトピックをツリーで一括表示


トピック内ページ移動 / << 0 >>

このトピックに書きこむ