回答 「このファイルは別のコンピュータからのものです」-個別にブロックを解除せずにフォルダ内のすべてのファイルのブロックを解除するにはどうすればよいですか? からのファイルのブロックを解除する方法を説明しますリモートソース。テストの目的で、私は逆を達成したいと思います。 Windowsがファイルを「ブロック」するようにファイルのゾーン識別子を設定するにはどうすればよいですか?
私はPowerShellソリューションに不慣れですが、他のメカニズムも受け入れられます。
ファイルがダウンロードされると、ファイルプロパティダイアログにSecurity
チェックボックスが付いた追加のUnblock
セクションがあることに気付くでしょう:
ファイルに関するこの追加データは、 代替データストリーム(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