カテゴリ
以前の記事
2024年 03月 2024年 02月 2023年 12月 2023年 11月 2023年 09月 2023年 08月 2023年 07月 2023年 06月 2023年 05月 2023年 04月 2023年 03月 2022年 10月 2022年 09月 2022年 08月 2022年 02月 2021年 06月 2021年 05月 2021年 03月 2020年 11月 2020年 10月 2020年 08月 2020年 07月 2020年 06月 2020年 04月 2020年 03月 2020年 02月 2020年 01月 2019年 09月 2019年 04月 2019年 02月 2019年 01月 2018年 12月 2018年 11月 2018年 10月 2018年 04月 2018年 03月 2018年 02月 2018年 01月 2017年 12月 2017年 07月 2017年 06月 2017年 02月 2017年 01月 2016年 12月 2016年 11月 2016年 10月 2016年 06月 2016年 05月 2016年 03月 2016年 01月 2015年 06月 2015年 03月 2015年 02月 2015年 01月 2014年 12月 2014年 11月 2014年 10月 2014年 07月 2014年 05月 2013年 05月 2013年 03月 2013年 02月 2013年 01月 2012年 11月 2012年 10月 2012年 09月 2012年 06月 2012年 02月 2011年 10月 2010年 11月 2010年 03月 2010年 02月 2008年 03月 2007年 11月 2007年 07月 2007年 06月 2005年 03月 2005年 02月 2005年 01月 2004年 11月 2004年 10月 2004年 08月 2004年 07月 2004年 06月 2004年 05月 2004年 04月 2004年 03月 フォロー中のブログ
メモ帳
ご意見、突っ込みは以下へ
parshyu@gmail.com その他のジャンル
ファン
記事ランキング
ブログジャンル
画像一覧
|
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
| φ(・ω・ )
|
ファン申請 |
||