2015年7月14日火曜日

ドライバソフトウェアの挙動がひどい~本当にひどかった~

番外編です。

軽くまとめると、

  • マザーボードのチップセット用ドライバソフトウェアをインストールすると、ログオン時に実行されるタスクが登録される
  • タスク実行時に ini ファイルが参照されるが、その ini ファイルはドライバソフトウェアインストール時に(インストールを行ったユーザの)一時ファイル用フォルダ(%TMP%、%TEMP%)に作成される
  • 場所が場所だけにうっかり消えちゃうかもね

というものでした。

タスクのトリガは「任意のユーザのログオン時」なのですが(さらに「最上位の特権で実行する」にチェックが入っている)、ここでふと気付きました。他のユーザでログオンしたらダメなんじゃなかろうか。

たぶん予想通りだと思いますが、試してみました。

適当に管理者ユーザを作成してログオンしてみると、

C:\Users\<user>\AppData\Local\Temp\NNNNNNLog.ini is Lost

まさに予想通りでした。

アカウントの種類を変更して標準ユーザにすると少し様子が違ってきます。ログオンすると UAC のダイアログが表示され、管理者権限を持ったユーザのパスワードを求めて実行がブロックされます。

  • ドライバソフトウェアのインストールを行った管理者ユーザを選択すれば問題なく実行される
  • ドライバソフトウェアのインストールを行っていない管理者ユーザを選択すればエラーになる

一応正常動作させることはできますが、ログオンの度に行われるのでやってられません。

というわけで、根本的に作りがおかしいと思います。


以下余談。

細かいことですがエラーメッセージは本当は、

C:\Users\<user>\AppData\Local\Temp\NNNNNNLog.iniis Lost

となっていて、最初は意味がよく分かりませんでした。

0 件のコメント:

コメントを投稿