web-dev-qa-db-ja.com

Windowsでファイルを「別のコンピュータから送信された」ものと見なすにはどうすればよいですか?

回答 「このファイルは別のコンピュータからのものです」-個別にブロックを解除せずにフォルダ内のすべてのファイルのブロックを解除するにはどうすればよいですか? からのファイルのブロックを解除する方法を説明しますリモートソース。テストの目的で、私は逆を達成したいと思います。 Windowsがファイルを「ブロック」するようにファイルのゾーン識別子を設定するにはどうすればよいですか?

私はPowerShellソリューションに不慣れですが、他のメカニズムも受け入れられます。

12
jpmc26

ファイルがダウンロードされると、ファイルプロパティダイアログにSecurityチェックボックスが付いた追加のUnblockセクションがあることに気付くでしょう: enter image description here

ファイルに関するこの追加データは、 代替データストリーム(ADS) に格納されます。 Streams などのツールを使用すると、代替データストリームをさまざまな方法で表示できますが、PowerShellを使用するとより便利になります。

たとえば、ファイルのすべてのストリームを表示するには、次のPowerShellコマンドを使用できます。

Get-Item -Path Autologon.exe -Stream *

出力は次のとおりです。

PSPath        : Microsoft.PowerShell.Core\FileSystem::C:\ads\Autologon.exe::$DATA
PSParentPath  : Microsoft.PowerShell.Core\FileSystem::C:\ads
PSChildName   : Autologon.exe::$DATA
PSDrive       : C
PSProvider    : Microsoft.PowerShell.Core\FileSystem
PSIsContainer : False
FileName      : C:\ads\Autologon.exe
Stream        : :$DATA
Length        : 138920

PSPath        : Microsoft.PowerShell.Core\FileSystem::C:\ads\Autologon.exe:Zone.Identifier
PSParentPath  : Microsoft.PowerShell.Core\FileSystem::C:\ads
PSChildName   : Autologon.exe:Zone.Identifier
PSDrive       : C
PSProvider    : Microsoft.PowerShell.Core\FileSystem
PSIsContainer : False
FileName      : C:\ads\Autologon.exe
Stream        : Zone.Identifier
Length        : 26

この質問では、関心があるのはZone.Identifierストリームです。

Zone.Identifierという名前のストリームを手動で追加または更新し、ストリームの値を設定するには、次のPowerShellコマンドを実行します。

Set-Content -Path .\file.exe -Stream Zone.Identifier -Value '[ZoneTransfer]','ZoneId=3'

ZoneIdには、次のいずれかの値を指定できます。

0 = "Local machine"
1 = "Local intranet"
2 = "Trusted sites"
3 = "Internet"
4 = "Restricted sites"

:ファイルからZoneTransferストリームを削除して、ファイルのプロパティダイアログからファイルのブロックを解除するのと同じ操作を実行するには、次のコマンドを実行できます:Remove-Item -Path .\file.exe -Stream Zone.Identifier

17
HelpingHand