ブロックされたexeを再現“ブロック解除” Windows 2003のファイルプロパティのオプション
-
02-07-2019 - |
質問
プログラムをWebサイトからWindows 2003マシンにダウンロードすると、ブロックが表示されます。exe、プロパティを右クリックして、「ブロック解除」ボタンを選択する必要があります。
ファイルがブロックされ、十分な権限がない場合にインストーラーに検出を追加したい。
しかし、ブロックを解除する必要があるこの状態でexeを取得することを簡単に再現することはできません。
この機能をテストできるように、exeでブロック解除を表示するにはどうすればよいですか?
解決
これはNTFSファイルストリームを使用して行われます。 " Zone.Identifier"という名前のストリームがあります。ダウンロードしたファイルに追加されました。 IE7がストリームに含まれる特定の種類のファイルをダウンロードする場合:
[ZoneTransfer]
ZoneId=3
設定する最も簡単な方法は、それらのコンテンツを含むテキストファイルを作成し、それを使用して代替ストリームに追加することです。
Zone.Identifier.txt:
more Zone.Identifier.txt > file.exe:Zone.Identifier
コマンド:
<*>次に、それを確認する方法は、Zone.Identifierストリームを開いてZoneId = 3を探すか、単にストリームが存在する場合、ユーザーがその警告を受け取ると仮定することです。
これはアクセス許可とは関係がないことに注意することも重要です。管理者にも同じ警告が表示されます。ソースとファイルのタイプを完全に処理することです。ユーザーが[このファイルを開く前に常に確認する]のチェックを外すと、ストリーム全体が消えます。ボックスをクリックして、[実行]をクリックします。
他のヒント
これには、MSDNで文書化されている、サポートされているAPIがあります。 MSDNで「Persistent Zone Identifier Object」を検索します。基本的には、 CLSID_PersistentZoneIdentifier
を使用して CoCreateInstance
を実行し、 IPersistFile
インターフェースを要求します。次に、問題のファイルの名前で IPersistFile :: Load
を呼び出します。次に、 IZoneIdentifier
インターフェースのQIを実行し、 IZoneIdentifier :: GetId
を使用してファイルのゾーンを取得します。 「ウェブのマーク」がない場合は、 URLZONE_LOCAL_MACHINE
を取得する必要があります。他の応答で言及されている3のZoneIdは URLZONE_INTERNET
です。 (列挙は URLZONE
と呼ばれ、MSDNにも文書化されています。または sdk \ inc \ urlmon.h
を参照してください。)「ウェブのマーク」を削除または変更できます; IZoneIdentifier :: Remove
または IZoneIdentifier :: SetId
を呼び出してから、 IPersistFile :: Save
を呼び出します。これらすべての詳細については、MSDNを参照してください。がんばって!
これに感謝し、私を大いに助けました。
コンテンツを含むバッチファイルを作成すると、プロセスをさらに簡単にできます。
echo [ZoneTransfer] > Zone.Identifier
echo ZoneId=3 >> Zone.Identifier
more Zone.Identifier > %1:Zone.Identifier
これによりZone.Identifierが生成され、それに応じてファイルがマークされます。
実行するには、ファイル名を指定するだけです。ファイルの名前がmark.batの場合
mark.bat myfile.txt