2018年10月4日木曜日

シンクライアント上でUnity Proの認証を自動化する

目的

大学の演習室などに導入されるシンクライアント上でUnity Proアカウントを認証させ,Unityを起動後に特別な操作を必要とせず使える状態にしたい.

環境・条件・制約

大学の演習室と言っても色々あると思う.自分が経験した環境は次のようなものだった.

  • Windows 10
  • Unity 2017.3.1f1 (64bit)
  • OSイメージがネットワーク経由で提供されるタイプのシンクライアント.
  • イメージの書き換えは容易ではない.
  • 教員が提供する共有フォルダを学生アカウントから読み取りのみ可能.

方法概略

Unity Proアカウントを認証させて起動するとログイン情報とライセンスファイルが生成されることが, 新規作成されるファイルを丹念に調べると分かった. ログイン情報は他のPCでもそのままコピーして使用できるけど, ライセンスファイルにはPCの情報がハッシュ化されて保存されるので 他のPCのファイルを使いまわすことができない.そこで,次の方法で必要なファイルを収集して, シンクライアントをログインするたびに共有フォルダなどから必要なファイルをコピーしてからUnityを起動する.

  • 各クライアントで下の方法で「ログイン情報を収集」し,ファイルを配置してログインする.
  • シリアルキーを入力してUnity Proアカウントを認証させた上で,「ライセンスファイルを収集」する.
  • シンクライアント上でUnityを実行するときはバッチファイルなどで「ログイン情報とライセンスファイルを配置」した上でUnityを起動する.

ログイン情報を収集

%username%はアカウント名に置き換わる.このログイン情報は一定期間で期限切れになるみたいなので,定期的に更新する必要がある.

copy /Y C:\Users\%username%\AppData\LocalLow\Unity\Browser\Cookies d:\

ライセンスファイルを収集

%COMPUTERNAME%はマシン名に置き換わる. これで異なるクライアントのライセンスファイルをUSBメモリやネットワークドライブの同じフォルダに集める. このファイルはどうも期限がなさそう. PCの情報が含まれているので演習を受ける人が勝手に持ち返っても利用できない.

copy /Y C:\ProgramData\Unity\Unity_lic.ulf D:\%COMPUTERNAME%\Unity_lic.ulf

ログイン情報とライセンスファイルを配置

この内容をバッチファイルに入れて,Unity使用時に実行するようにすればいい.

copy /Y d:\Cookies C:\Users\%username%\AppData\LocalLow\Unity\Browser\Cookies

copy /Y d:\Cookies C:\Users\%username%\AppData\LocalLow\Unity\Browser\Cookies
C:\ProgramData\Unity\Unity_lic.ulf