人気ブログランキング | 話題のタグを見る

パジャマシステム


メモと日記帳
by parshyu
S M T W T F S
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
カテゴリ
以前の記事
フォロー中のブログ
メモ帳
ご意見、突っ込みは以下へ
parshyu@gmail.com
その他のジャンル
ファン
記事ランキング
ブログジャンル
画像一覧

Microsoftのユーザーアカウント制御とVisualStudio製アプリ

Windows上で動作するシステムを作成する必要があって、VisualStudioでアプリケーションをつくることがあります
開発者以外がインストールできるように、VisualStudioとかでインストーラーをつくると
デフォルトのインストール先は、
C:\Program files\プロジェクト名
とか
C:\Program files\会社名\製品名
になったりします。うろおぼえですが、前者がVB6のディストリビューションウィザードで
後者が.Net系のVisualStudioだったと思います。

気をつけている人は、C:\会社名\とかC:\App\とかにすることもあるそうですが
気をつけていてもそこまで考えきれていない僕のような人は、Program Filesのままになっていたりします。

このProgram Filesは、C:\にフォルダをつくるよりも、開発者に厳しいつくりになっています。
ファイルを絶対パス、C:\とかから呼び出す際

C:\Program files\会社名\製品名\アプリファイル名.exe

といったファイル名になるので、直接記述や、Call命令やRun命令とかで呼び出すのですが
命令を解釈する側は、半角スペースは命令の区切り文字と認識するので
(1)C:\Program
(2)files\会社名\製品名\アプリファイル名.exe
なんて解釈して、C:\Programというアプリを実行して、第一引数にfiles\会社名\製品名\アプリファイル名.exeをわたそうとして
失敗するので、
呼び出す際、”C:\Program files\会社名\製品名\アプリファイル名.exe”とか
”””C:\Program files\会社名\製品名\アプリファイル名.exe”””といった文字列でわたすとか
ダブルクォーテーションでかこむという処理が必要になったりします。

これのおかげで、安易にexeが実行されないという面もあって
安易なつくりのスパイウェアやウィルスがあっても実行できない面もあるんじゃないかと
めんどくさいなぁと、UNIXの/usr/local/binみたいにしてよとか思いながら
受け入れていたりしました。僕だけかもしれませんが。

そんなProgram Filesフォルダに設置するアプリケーションに対して
Microsoftは少しずつ制限をくわえてきました。
Windows Vista以降より導入されたユーザーアカウント制御、UACとよばれるものです
いくつかの保護機能があるようなのですが、フォルダへの書き込みを保護したり、管理者権限承認のもと実行や書き込みができる機能があります。
何かをインストールしてデスクトップにできたショートカット。
これをダブルクリックして実行すると「このコンピューターへの変更を許可しますか?」と
画面暗転してクリックをまったりします。

人的にボタンを押すゲームのアプリなら
このような機能がある方が、うっかり変なアプリをインストールしなくてもよくっていいのかもしれませんが
わかって使おうとするテキストエディターとか、データコンバーターとかでも
毎回毎回承認をもとめてきます。

僕のような、場当たり的に開発するようなお仕事がくる人なのに
PCで動作するデータ処理系のようなアプリまで作成する側にとってはとっても厳しい条件です

定期動作させようにも、OKぼたんを押さないと動作しないアプリケーションができあがってしまうことになり
UACのおかげでXPまで動作していたのにVista以降は動かないアプリになってしまうんですね。

さらにとても開発者に厳しいのが
ファイルとレジストリの仮想化というUACでできなくてもこちらで逃げれるような機能があるということです
"Program Files"下にインストールされてあっても、変更/書き込みが許されていない場合には、 新たに更新されたファイルの内容が、仮想化先のフォルダに書き込まれる仕様になっていて
Program Filesにいろいろな人が、各々が思う権限でアプリをインストールしていると
どれかのパッチやiniファイルとかはProgram Filesとかに存在しているので大丈夫なのに
別のアプリは、C:\ユーザー\naka\AppData\Local\VirtualStore\Program Files (x86)\ とかに入っていたりします。

C:\からファイル検索したらみつかったんだけれど
仮想化を知らない人にはどういう仕組みかわからず途方にくれたりすることがあります
管理ができていないというのがあればそのとおりなのですが
サーバーでもないけれど、サーバーのように管理者が統一した思想のもとに管理しないと、
ユーザー単位で設定ファイルがちらばってくれて
いざトラブルになったときに解決が困難になるように展開される機能になっていたりします。

さらに厳しいのが、VBScriptとかで仕組みを構築することにUACが対応しきれていないこともあります。
UNIXなどでテキストデータ加工のシェルを組んでいると、他の人がつくってくれたシェルをパイプライン処理や
シェルから別のシェルをよびだしたりと、
資源の再利用がしやすいです。
exeを何個もつくるより、ワークステーションのパーワーにお願いできるなら
既存のコマンドとシェルを組み合わせる方が何かとうまくいくことがあります。

WindowsにもバッチとVbscriptとかPowerShellとかあるのですが
バッチはサブルーチン化したり、条件分岐をつくったりするのがちょっと難しく
VbscriptはVBAに近くてよいのですが、
スクリプト本体には、exeのように管理者権限で実行するという機能をもちこめないため
exeと同じように管理しようと、Program Filesの下の会社名フォルダに置くと
UACのOKボタン押しましょうメッセージがでてしまったり
サーバーからファイルをダウンロードするように作成しても、Program Filesフォルダに書き込めずに
なにもできないスクリプトになってしまったりします。

なので、VbScriptは
(1)別だてのフォルダにおくか、
(2)Program Filesとかをフルコントロールにするか
(3)タスクスケジューラー等で管理者権限のタスクで実行するようにしこむ
といった工夫が必要になってきます

そんなUNCですが、Vista 7 8 ときて10になって、さらに厳しくなったりします。
7くらいまでは、UACをさげてAdministratorsグループにすれば
それなりにXPのように動作してくれたりするのですが
10になると、Administratorsグループも通常運用ではつかわせないようになってきます。
10といってもリリース時期というかバージョンというか、プロダクトバージョンというかそういうのによって
機能の差異はあるのですが
僕が最近さわった10では、ビルトイン Administratoでは、この機能は使えません
といったメッセージで、
Windowsフォトや、タスクバーの通知アイコン設定とか、時刻設定とか
あらゆるものが微妙に制限メッセージがでて使えなくなったりします。

ローカルセキュリティポリシーの設定をあちこちいじればなんとかなりますが
それでもWindowsフォトは使えませんとか、エラーメッセージがきえなかったり
微妙な動作のまま運用されるPCになってしまいます。

せめて、1回承認したら、2回目以降承認なしモードとか
UACに、XP互換モードとかつけてくれるか
そもそも、VisualStudioで作成したSetup.exeなら、ProgramFilesフォルダに作成するのを判定して
C:\user\app とかに置き換えてインストールしてくれるとか
そういった機能をつけてくれれば
もうすこしパーソナルコンピューターとしてつかえたんじゃないかと思うのですが

どうにも、どこかのできるセットアップ担当業者やショップの人がセットアップして
あとはビューワーとかでコンテンツを見て楽しむ
といった、1名用読み取り用クライアント端末と化しているようで
もう、Windowsを仕事で使うのはやめてくれといったMicrosoftのメッセージのような気がしてきました。

それは僕だけでしょうか。

参考になったページ
Windows Vista/7/8/8.1/10のUAC対策について
http://www.trycut.com/index.htm



by parshyu | 2017-12-11 22:25 | φ(・ω・ )
<< 文字列の左へシフトする関数をV... そうだったのねADODBでのS... >>