Q18:現在多くのツールとツールをつなぐ際には外部プログラム通信で実行させています。DOSコマンドを利用したバッチファイル処理を外部プログラム通信で実行させる処理を行う際に、vista以降のOSではユーザアカウント制御に引っかかり、実行を聞いてきます。ユーザアカウント制御そのものをMZプラットフォーム側で回避できるのでしょうか。
Q18-1:
現在多くのツールとツールをつなぐ際には外部プログラム通信で実行させています。最近、DOSコマンドを利用したバッチファイル処理を外部プログラム通信で実行させることを追加し始めました。この処理を行う際にひと手間必要になっています。
OSがXPであればそのまま実行できるのですが、vista以降のOSではユーザアカウント制御に引っかかり実行を聞いてきます。ワンクッションおいてDOSでユーザアカウント制御を回避するバッチファイルも作ったのですが、それを実行するときにやはりユーザアカウント制御に引っかかります。ユーザアカウント制御そのものをMZプラットフォーム側で回避できるのでしょうか。
まだ、vista以降のPCの数そのものは多くはありませんが、今後のことを考えるとユーザアカウント制御を回避したく思います。ただし、一般に言われているユーザアカウント制御を無効にしないですむ方法は避けたいと考えています。何かよい方法は無いでしょうか。
一応テストで作っているファイルを添付しておきます。(テプラを使ってバーコード印刷するツールの一部で起動時にテプラのソフトの有無をチェックをさせています。テストはボタンを押したときに調べるものにしています。バッチファイルがbatで送信できないのでtxtに直しています)
関連ファイル:exist.txt、バッチファイル実行テスト(引数付き).mzax
A18-1:
一般論としては、OSのWindows側で必ず表示されてしまうユーザアカウント制御のダイアログは、MZ側で回避することはできません。推奨はできませんがユーザアカウント制御を無効にするか、または対象とするソフトウェアごとに回避方法を検討する必要があります。
ただし、Windows側でやり方を工夫すれば回避できるようなユーザアカウント制御のダイアログが、MZから呼び出すと表示されてしまうという問題であれば、回避できる可能性があるので、調査したいと思います。
例えば、お問い合わせの内容ですと、バッチファイルで実行すると回避できるにもかかわらず、それをMZから起動するとダイアログが出てしまうという状況であれば、それを回避する方法を検討する余地があると思われます。そのような状況と理解してよろしいでしょうか。
もしそうであれば、もう少しお聞きしたいことがありますので、ご返答いただきますよう、よろしくお願い申し上げます。
Q18-3:
アプリケーションの利用者側からすれば何度もその手の表示が出るとわずらわしいと考えられるのでよろしくお願いします。
弊社の場合は自分が他言語など利用しない開発をするためあまり参考にならないと思います。
そのため現状、利用している外部プログラムはほとんどがアプリケーションローダーかバッチファイルです。
まれに今回の発端となったテプラのソフトなどありますが、UACで警告が出るものはバッチファイルだけです。
基本的に発行元の署名が無いファイルがUACに引っかかるようなので自作のバッチファイルは確実に引っかかると思います。
A18-3:
お問い合わせいただいた件について、詳細に調査しましたのでご報告します。
こちらにもTEPRA PRO SR930がございましたので、PCと接続して印刷する環境を構築しました。利用したPCのOSはWindows 7です。Vistaと動作が異なる場合があるかもしれませんので、その場合はお知らせください。
これに関して、一番の問題はPC側にインストールしたソフトウェアSPC9 3.6が、管理者権限がないと実行できない点にあります。メニューから起動しても、バッチファイルから起動しても、必ずUACのダイアログが表示されます。この状況では、MZ側で回避することはできません。
ところで、SPC9はシステムに何らかの変更を加える類のソフトウェアではありません。つまり、この管理者権限は、管理者権限が必要なフォルダにインストールされていることに由来すると考えられます。試しにこのソフトウェアを、フォルダごとデスクトップにコピーして、コピー先のフォルダにあるSPC9V36.exeを実行してみてください。UACのダイアログが表示されずにソフトウェアが起動するでしょうか。
これがうまくいけば、バッチファイルから起動してもいいですし、MZの外部プログラム通信から起動してもよいと思います。つまり、ソフトウェアを実行するユーザーがインストール先のフォルダに関して権限を持っている状況にすれば、UACのダイアログが出なくなりますので、ご検討してみてはいかがでしょうか。
一方、バッチファイルの問題については、こちらで再現できておりません。一般的にバッチファイルを実行する場合に、セキュリティ関連のダイアログが出ることはありますが、これは二度目以降表示しないようにすることが可能だと思います。常にUACのダイアログが出るというのは、バッチファイル内で起動しているコマンドかソフトウェアの問題ではないかと思いますが、いかがでしょうか。
もしSPC9以外にもUACのダイアログが出る例がありましたら、お知らせいただければ調査してみます。
ご連絡:
メニューからの起動時は問題ない状態です。現状は弊社のどのPCに関しても管理者権限で使うようになっていますので、標準インストール先(programfailes)でもメニュー起動時にはダイアログの表示はない状態です。
今回の確認内容はバッチファイルの実行時にUACダイアログ表示の回避ができるのかどうかのつもりでした。あくまでテプラは今回確認してみようと思った時に作っていたアプリケーションで実行しようとしていたバッチファイルの中身がそうだっただけです。(ファイルを2つ実行する形で、テプラメーカKINGJIMの構文例が1行だったのでコマンドプロンプトからバッチファイル作成することにしました。)
二度目以降表示しないの部分が無かった気がしたのでもう一度ダイアログを確認するとUAC制御の画面ではなく、プログラムの発行元確認でした。windows7になって最初のころに両方が表示されることがあり混同していました。
一旦こちらで調べ直すことにします。
お時間とらせてしまい申し訳ありませんでした。