ブロックされたexeを再現“ブロック解除” Windows 2003のファイルプロパティのオプション

StackOverflow https://stackoverflow.com/questions/135600

質問

プログラムを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
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top