この記事で扱っていること
- パスワードつきでzipファイルを生成する方法
を紹介しています。
注意:すべてのエラーを確認しているわけではないので、記事の内容を実装する際には自己責任でお願いします。また、エラー配線は適当な部分があるので適宜修正してください。
LabVIEWに標準でついてくる関数に、指定ファイルのzip化のための関数があります。しかし、この関数はzipファイルを生成するだけで、「パスワード付きのzipファイル」の生成は行いません。
そこで、パスワードつきのzipファイルの作成のための、Lhaplusという無料ソフトを使用します。これをアプリケーションとして呼び出して、コマンドライン上で操作しパスワード付きのzipファイルを作成する、という作戦でzipファイルにパスワードをつけます。(なのでLhaplusのインストールは別途行う必要があります)
パスワードは指定したテキストあるいはLabVIEWに自動生成させることもできます。
また、おまけの機能としてどのzipファイルにどのパスワードを付与したかという記録を残すための機能も用意してみました(記事後半で紹介しています)。
どんな結果になるか
フロントパネルではzipファイル化したい対象のファイルやフォルダを選択する制御器と、そのzipファイルをどこに保存するかを指定する制御器があります。
そしてパスワードは自力で作るかLabVIEWにランダムに作らせるかを決めることができます。
プログラムを実行すると、もし自動でパスワードを生成するようにした場合には、指定した文字数で生成したパスワードが表示されます。
ただし注意点として、指定するパスのどこかにスペースがあるとLhaplusがエラーを吐くようです。そのためスペースはなくしてアンダーバー「_」等を使用する必要があります。
プログラムの構造
やっていることは単純に、Lhaplusのソフトをシステム実行関数を使用して起動しているだけです。
コマンドラインからLhaplusを操作するときに色々指定できるオプションがあるようですが、今回は必要最低限のオプションにとどめています。
- /c: 形式を指定。今回は「zip」
- /o: zipファイルの出力先を指定
- /p: パスワードを設定
そのため、コマンドラインに渡す文字列としては
“C:\Program Files (x86)\Lhaplus\Lhaplus.exe” /c:zip /o:<zipファイルの出力先> /p:password <保存したいファイルパス>
を指定すればいいことになります。
システム実行(System Exec)関数は、関数パレット「接続」の「ライブラリ&実行可能ファイル」パレットにあります。
パスワードの生成についてはサブVIとしていますが、別にどのような形でも構わないと思います。私は以下のように実装しました。
これは、記号などもごちゃまぜに、指定した文字数分、ランダムに生成する例となります。
パスワードを保存する場合
さて、上記のプログラムでは、プログラムを実行してランダムにパスワードを生成した場合、それは記録として残りません。いくら保護をかけたいからパスワードをかけたとはいえ、一応管理のためにパスワードの情報を記録で残したい、という場合もあると思います。
そこで、このzipファイルのパスワードはこれですよ、という情報を記録するファイルも生成できるようにしてみます。
このプログラムのブロックダイアグラムは以下のようにしてみました。password.txtが存在しなくても指定したパスに生成するようにしています。
このプログラムを実行して、特定ファイルに保存した結果、zipファイル名とパスワードの対応が表示されます。
サブVIの中身は以下のようです。
ここでは、password.txtという名前のファイルとして保存するようにしていますが、もちろんファイル名は何でも構いません。
情報をやり取りするとき、複数のファイルをまとめてそれをzipファイルにする場面は多いと思いますが、さらにセキュリティを強化するためにパスワード保護をかける必要がある、という場合に役に立ててもらえればうれしいです。
ここまで読んでいただきありがとうございました。
コメント