ファイルのブロック設定解除はコマンドで : Windows

SSH クライアント : Poderosa

普段 Lubuntu を使っているため、SSHクライアントは LXTerminal や Terminator を使っています。
ただ、Windows ではずっと Poderosa を愛用しています。

Poderosa はバージョン 5 が出ていますが、私は UI の好みでバージョン 4 を使っています。

実行時エラー

ダウンロードしたファイルを解凍して使おうとすると、大量のエラーが表示されて実行されませんでした。

エラーの内容は「アセンブリ C:\・・・.dll をロードできませんでした。」です。
上記のメッセージが大量に表示されます(といっても14個でしたが)。
あれっと思い、Poderosa.exe のプロパティを見てみると、以下メッセージが表示されていました。

このファイルは他のコンピュータから取得したものです。
このコンピュータを保護するため、このファイルへのアクセスはブロックされる可能性があります。

このメッセージ(セキュリティの警告)は実行ファイルなどをダウンロードすると大抵付いています。
今回もいつも通り、"許可する"にチェックを入れて [OK] を選択した後、再度実行したのですが、うまくいきません・・・。
同じメッセージ「アセンブリ C:\・・・.dll をロードできませんでした。」が表示されます。

原因

不思議に思って確認してみると、exeファイル以外にも同じようにブロック設定がされています。
どのファイルが対象なのかがパッと見て分からないので、コマンドで処理することにしました。

プロパティの変更

プロパティ(属性情報)はコマンドでも変更が可能です。

属性情報の確認・更新

more コマンドを使うとファイルの属性情報を確認・更新することができます。

コマンド概要

Microsoft Windows [Version 10.0.16299.611]
(c) 2017 Microsoft Corporation. All rights reserved.

> more /?
Displays output one screen at a time.

MORE [/E [/C] [/P] [/S] [/Tn] [+n]] < [drive:][path]filename
command-name | MORE [/E [/C] [/P] [/S] [/Tn] [+n]]
MORE /E [/C] [/P] [/S] [/Tn] [+n] [files]

    [drive:][path]filename  Specifies a file to display one
                            screen at a time.

    command-name            Specifies a command whose output
                            will be displayed.

    /E      Enable extended features
    /C      Clear screen before displaying page
    /P      Expand FormFeed characters
    /S      Squeeze multiple blank lines into a single line
    /Tn     Expand tabs to n spaces (default 8)

            Switches can be present in the MORE environment
            variable.

    +n      Start displaying the first file at line n

    files   List of files to be displayed. Files in the list
            are separated by blanks.

    If extended features are enabled, the following commands
    are accepted at the -- More -- prompt:

    P n     Display next n lines
    S n     Skip next n lines
    F       Display next file
    Q       Quit
    =       Show line number
    ?       Show help line
    <space> Display next page
    <ret>   Display next line

サンプル) ブロック設定

ブロック設定は ZoneId に 3 が設定されています。

> more < test.pdf:Zone.Identifier
[ZoneTransfer]
ZoneId=3

プロック設定解除

echo コマンドを使い、空で上書きすると ZoneId が空になります。

> echo.>test.pdf:Zone.Identifier

> more < test.pdf:Zone.Identifier

ファイル一覧の取得

echo コマンドはファイル単位にしか処理できないため、一括で処理するには以下の手順を踏む必要があります。

  • ファイル一覧を取得する
  • バッチを作成する
    ※後述する Streams を使えばフォルダ単位の処理が可能です。

ファイル一覧に関しては、普段使っているファイル一覧出力ソフト LS を使って取得しました。

後は、表計算ソフトなりエディタなりを使って、バッチファイルを作って実行すれば OK です。

フォルダ単位での一括更新

Microsoft 公式の Streams をダウンロードすれば、フォルダ単位で属性情報の更新が可能になります。

base on Streams - Windows Sysinternals

NTFS ファイル システム上では、アプリケーションは情報の代替データ ストリームを作成することができます。
"file:stream" という構文を使用すると、代替データ ストリームの読み取りと代替データ ストリームへの書き込みが可能になります。

Streams の使用
使用法: streams [-s] [-d] <ファイルまたはディレクトリ>

-s サブディレクトリを再帰処理します。
-d ストリームを削除します。
Streams では、"streams *.txt" のようにワイルドカードを使用できます。