企業内RPA用パソコンを常時稼働させておく画面ロックプロテクトテクニック



RPAパソコンの常時起動



企業内パソコンは,セキュリティの関係から一定期時間(10分程度)無操作の場合,強制的にロック状態やサインアウト状態になることがあります。

この場合,通常のパソコンは人間が操作するので問題ありませんが,RPA用パソコンは,ロボットのスケジュール(unattended)起動で困ることになります。

RPA用パソコンで,この自動ロックや自動サインアウトの機能を外せば良いのですが,一般的に企業内パソコンは社内情報部門が管理しており,全社統一でセキュリティ対策を施しているため,特殊なパソコンを作るのを嫌います。

そこで,簡易的にRPA用パソコンの自動ロックや自動サインアウトの機能を発揮させないようにするため,簡易ツールを作成しました。

もちろん,簡易ツールであってもパソコンにインストールするには,情報部門の許可が必要です。

今回は,その簡易ツールの作成方法について学習します。

結論から言うと,ロック状態やサインアウト状態になることを防ぐには,パソコンの無操作状態をなくせばいいので,定期的にマウスを動かしたり,パソコンやプログラムに影響を与えないタッチキーを入力します。

つまり定期的に動作するKEY送信スクリプトを作成して,パソコンの起動時にバックグラウンドで動作させればよいことになります。

今回は,Windowsパソコンに常駐しているVBSソフトを利用することにしました。
VBS(VBScript)は、「Visual Basic」に似たWindowsのスクリプト言語で, スクリプト実行環境「Windows Script Host」(WSH)上で,簡単に動かすことが出来ます。

しかし,マイクロソフトから2027年度にはVBSを廃止する旨,発表されており,それほど長くは使えませんが,当面の対策として有効かと思います。





  画面ロックプロテクトのメインスクリプト


具体的なコーディングは,次のようになります。


RockProtect.vbs

'  一定間隔でシフトキーを押すvbaスクリプト

Option Explicit '変数宣言の強要ステートメント

'WScript.Echo "RockProtect.vbsを開始する。"

Dim i

For i = 1 To 3000
'   起動用のオブジェクトを生成
    Dim objWsh
    Set objWsh = WScript.CreateObject("WScript.Shell")

'   WScript.Echo "keyPushを実行"
    objWsh.Run """.\keypush_f15.vbs""",,true

    Set objWsh = Nothing  'オブジェクト解放

'   WScript.Echo "keyPush.vbsを起動した。[" + Cstr(i) + "]回目"

    WScript.Sleep(1000*60*5)
    
Next

WScript.Echo "RockProtect.vbsを終了する。"


コーティングを見てもらえば分かるように,「WScript.Shell」を起動して,その上に「F15」Keyをプッシュする「keypush_f15.vbs」スクリプトを動かしているだけです。

今回のコード例では,その動作を5分間隔で3000回(約10日程度)繰り返すようにプログラムしています。

これを参考に,自社に合うように修正して下さい。「F15」キーは,初期のパソコンではよく使われていましたが,今では使うことがほぼなく,一番影響が低いと判断したためです。

ところどころ,コメントにしているスクリプトがありますが,デバッグ用に使ったもので,参考までに残しています。

ここでは記載していませんが,特定のプロセスが動いていない時だけ,動作させるなども可能です。工夫して下さい。

なお,注意する点は,「SHIFT-JIS文字コードファイルとして任意のフォルダに格納することです。「UTF-8」などでは動作しません。



  F15KEYをプッシュするスクリプト


メイン側から呼び出すF15KEYをプッシュするコードは次のとおりです。このスクリプトを同一フォルダに保存します。


keypush_f15.vbs

' F15キーを押すだけのスクリプト
'
Option Explicit '変数宣言の強要ステートメント

' 変数宣言
Dim objShell
Dim fso
Dim file
Dim wstr

   Set objShell = WScript.CreateObject("WScript.Shell")

   objShell.SendKeys "{F15}"

   Set objShell = Nothing  'オブジェクトの解放

' ファイルシステムオブジェクトの作成
   Set fso = CreateObject("Scripting.FileSystemObject")

' テキストファイルのオープン(kakikae書換モード)
   Set file = fso.OpenTextFile(".\KeyPushLog.txt", 2, True)

   wstr = "画面ロックプロテクトキー出力 " & Now 

' テキストファイルに書き込み
   file.WriteLine(wstr)

   file.Close

   Set fso = Nothing


ここでは,「WScript.CreateObject("WScript.Shell")」でオブジェクトを取得し,「.SendKeys "{F15}"」でF15キーをプッシュしています。KEYは,そのほか「Shift」キーでも「Ctrl」キーでもパソコンに影響が無ければ何でも良いです。

そして,デバッグのため「画面ロックプロテクトキー出力 & 時刻」というメッセージを,同一フォルダに「KeyPushLog.txt」として出力しています。

最後に,オブジェクトに「Nothing」を与えて削除します。

また,このVBSスクリプトも「SHIFT-JIS」文字コードファイルとして,格納」しないと動作しません。ご注意ください。



  まとめ


最後に,この画面ロックプロテクトのスクリプトを「Taskスケジューラ」に設定して,PCのログオン時に起動するようにすれば完了です。

Taskスケジューラへの設定方法は,Windows画面左下の検索欄から「task」と打てば,起動アプリが出てきますので,アプリを起動しタスク作成すればよいです。

「タスク作成」で
 ・「全般」ー>「名前」->「ユーザログオン時のみ実行
 ・「トリガー」->「ログオン時」->「有効
 ・「操作」->「プログラムの開始」->「開始スクリプトの完全パス」設定
 ・「条件」->「任意に記入(例:AC電源時利用など)
 ・「設定」ー>「タスクを停止するまでの時間(デフォルト3日間なので注意
を設定します。

バックグラウンドで稼働しているか確認するには,タスクマネージャ(Ctrl+Alt+Del)を起動して,「詳細」タブで一覧の中に「wscript.exe」があれば稼働しています。

また,今回はキー入力を使いましたが,マウスを微妙に動かす方法もあります。これについては,VBSが廃止になる2027年までに考えることにしています。

工夫次第で,いろいろ出来るので参考にして下さい。

それでは,良いITリテラシーライフをお過ごしください。


なお,情報の正確性を期してはいますが,実施される場合には自己責任でお願いします。

0 件のコメント: