C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: バッチファイル内のアプリの逐次実行について


(過去ログ 11 を表示中)

[トピック内 20 記事 (1 - 20 表示)]  << 0 >>

■2891 / inTopicNo.1)  バッチファイル内のアプリの逐次実行について
  
□投稿者/ ティッキー (1回)-(2007/04/18(Wed) 09:23:45)

分類:[Windows 全般] 

WindowsXPのバッチファイルで、アプリを順番に実行したいのですが、
うまくいくアプリとうまくいかないアプリがあります。
コンソールアプリはなんとなく大丈夫っぽいのですが、Windowsアプリ
の中にまずいのがあります。

<A.bat>
notepad.exe
notepad.exe
notepad.exe

<B.bat>
explorer.exe
explorer.exe
explorer.exe

A.batは順番に実行されます(逐次実行とでもいうのだろうか)が、
B.batはアプリが3つ起動されて、すぐバッチが終了してしまいます
(非同期実行とでもいうのだろうか)。
なぜこういう現象が起こるのでしょうか?
また、これを簡単に回避する(順番に実行する)策はありますか?

引用返信 編集キー/
■2893 / inTopicNo.2)  Re[1]: バッチファイル内のアプリの逐次実行について
□投稿者/ 774RR (12回)-(2007/04/18(Wed) 10:14:36)
notepad は普通の動きをするので、直観的な動作をするんだけど、
explorer は特殊な動きをするのでこーなってしまう
bat で explorer.exe を新しく起動→
起動された explorer は、既に走っている explorer に新しい窓を開くよう依頼して、自分は即終了→
bat の次の行が実行される

自分ひとりの話なら explorer の設定を変えればいいんだけど、
お客様に設定変えてねとは言えないよね。
仮に俺がお客様だとして「設定変えてね」と言われたら拒絶する。
簡単な対策はなさそうな気がするなー
そもそも explorer なんぞを自前で開く理由があるのかな?
引用返信 編集キー/
■2894 / inTopicNo.3)  Re[1]: バッチファイル内のアプリの逐次実行について
□投稿者/ WonderRabbit (6回)-(2007/04/18(Wed) 10:14:36)
WonderRabbit さんの Web サイト
 単純なアプリで多重起動が想定されていないような実行ファイルであれば、notepadの例のようにバッチファイルからも簡単に終了を待ったり非同期的に実行したりできます。
 explorer.exeの場合は、Windowsにおいて特殊な実行ファイルで通常は常に起動していて多重起動時の挙動をアプリ側で制御するよう作られている実行ファイルです。追加でexplorer.exeを起動しても単純なアプリのように追加実行したプロセス自体が動いてファイル表示などの動作をしているわけではなく、追加実行したexplorer.exeのプロセス自体は実はすぐに消滅しているので、提示されているバッチファイルではあたかも非同期的に実行されてしまうような挙動を示します。
 上記バッチファイルもタスクマネージャを開きながら実行するとファイル表示のウィンドウが出現しても結果的にはexplorer.exeのプロセス自体は増えていない事が解ると思います。


 ちなみに本題とは逆の事ですが非同期的にnotepadを実行したい場合は以下のような感じ。

start notepad.exe
start notepad.exe
start notepad.exe

startは/waitオプションを付けるとそのまま実行した時のように終了を待つようになります。

引用返信 編集キー/
■2895 / inTopicNo.4)  Re[1]: バッチファイル内のアプリの逐次実行について
□投稿者/ ぽぴ王子 (183回)-(2007/04/18(Wed) 10:29:53)
ぽぴ王子 さんの Web サイト
No2891 (ティッキー さん) に返信

> WindowsXPのバッチファイルで、アプリを順番に実行したいのですが、
> うまくいくアプリとうまくいかないアプリがあります。
> コンソールアプリはなんとなく大丈夫っぽいのですが、Windowsアプリ
> の中にまずいのがあります。

「Windowsアプリの中にあるまずいの」を具体的にあげてもらわないと、たぶんそこか
ら先へ進みませんね。
explorer.exe が単にサンプルとして挙げたものなのかどうか、ってことですけど。

explorer.exe を順番に実行するのは 774RR さんも書かれているように難しいと思い
ます。というか、僕もその理由が知りたいぐらい。
何かコマンドラインで抑制する方法がないかしら?と思ったけど、それっぽいコマンド
ラインオプションはないみたい。
http://support.microsoft.com/kb/152457/ja

それ以外の Windows アプリ(たとえば自作のプログラム)で順番に実行したいという
のであれば、Wonder Rabbit さんが書かれているように、 start /wait で OK じゃな
いかと思います。

さあどっち?
引用返信 編集キー/
■2903 / inTopicNo.5)  Re[2]: バッチファイル内のアプリの逐次実行について
□投稿者/ ティッキー (2回)-(2007/04/18(Wed) 13:17:33)
みなさん回答ありがとうございます。

explorerが特殊な動きをしているだけで、通常のWindowsアプリはちゃんと同期的に
実行できるということがよくわかりました。

ぽぴ王子さんが指摘しておられる実際に実行したいアプリとは「VMware Workstation」
です。ですがまだ未購入のため動作を確認しようとバッチを作ってサンプル的に
テストしているときにこの問題に遭遇しました(explorerは単なるサンプルです)。

実際には
VMware.exe (?)
shutdown -s
のようなバッチをスタートアップに登録しておいて、あるユーザーがWindowsに
ログオンしたときに、ホストOSからVM(ゲストOS)を自動で立ち上げ、逆に
VM(ゲストOS)をシャットダウンしたときに、ホストOSも自動的にシャットダウンする
といったことをやりたいのです(つまり、管理者以外の使用者にはVM(仮想マシン)しか見え
ないようにしたい)。つまり、VMwareを立ち上げた直後に shutdown がかかってしまうとまず
いわけです。
なので、「Windowsアプリの中にあるまずいもの」はテストしているときに、とりあえず
explorerがNGであるということがわかっただけです。それでほかにもこのようなアプリ
があるのかなぁと…
とにかく、explorerが特殊な作りになっているということがわかってホッとしました。

引用返信 編集キー/
■2905 / inTopicNo.6)  Re[3]: バッチファイル内のアプリの逐次実行について
□投稿者/ 渋木宏明(ひどり) (186回)-(2007/04/18(Wed) 14:18:35)
渋木宏明(ひどり) さんの Web サイト
> といったことをやりたいのです(つまり、管理者以外の使用者にはVM(仮想マシン)しか見え
> ないようにしたい)。

目的がそれだとすると、バッチでは弱すぎるんでは?
VMware の最小化したらデスクトップ触り放題だし、Ctrl+Alt+DEL でタスクマネージャ出したりなんかも可能ですよね。
引用返信 編集キー/
■2908 / inTopicNo.7)  Re[4]: バッチファイル内のアプリの逐次実行について
□投稿者/ ティッキー (3回)-(2007/04/18(Wed) 15:15:28)
渋木さん

> 目的がそれだとすると、バッチでは弱すぎるんでは?
> VMware の最小化したらデスクトップ触り放題だし、Ctrl+Alt+DEL でタスクマネージャ出したりなんかも可能ですよね。

なるほど。VMwareって以前少しだけさわっただけなので、あまり機能的なことは考えてません
でした(っていうかよくわかっていない)。最小化できないように設定できるとか、都合のいい
ことを考えていました。どうしてもできない場合は、ある程度までなら運用でカバー(××み
たいなことは禁止、とか)するしかないのかなぁ。。。

引用返信 編集キー/
■2916 / inTopicNo.8)  Re[5]: バッチファイル内のアプリの逐次実行について
□投稿者/ WonderRabbit (7回)-(2007/04/18(Wed) 18:03:13)
WonderRabbit さんの Web サイト
 とりあえず環境にもよりますが、その手の事ではグループポリシーについて調べてみるといいかもしれない。

Windows XP Professional > ビジネス エンド ユーザー向け情報 > Windows XP 機能別紹介
http://www.microsoft.com/japan/windowsxp/pro/business/feature/management/grouppolicy.mspx

 「ポリシーエディタ」などで検索してみると情報が集められるかもしれません。

引用返信 編集キー/
■2919 / inTopicNo.9)  Re[5]: バッチファイル内のアプリの逐次実行について
□投稿者/ 渋木宏明(ひどり) (187回)-(2007/04/18(Wed) 18:26:37)
渋木宏明(ひどり) さんの Web サイト
> なるほど。VMwareって以前少しだけさわっただけなので、あまり機能的なことは考えてません
> でした(っていうかよくわかっていない)。

全画面化することは出来ますが、最小化を禁止することは出来ないですね。
そもそも最小化できない GUI アプリなんて、一部のダイアログアプリくらいじゃないですか?

>ある程度までなら運用でカバー(××み
> たいなことは禁止、とか)するしかないのかなぁ。。。

どこまで我慢できるかですね。
てか、VMware 云々の前に、VMware を動かす土台になっている Windows の機能制限をどうやって行うかの方が重要だったりしませんか?

必要になったことが無いのでちゃんと調べたことがありませんが、例えば、エクスプローラに「マイドキュメント」しか表示できないようにしたり、スタートメニューから余分な項目を削ったりといった調整が出来るはずです>Windows

# グループポリシーとかで設定するんだったかな???

引用返信 編集キー/
■2929 / inTopicNo.10)  Re[6]: バッチファイル内のアプリの逐次実行について
□投稿者/ 中博俊 (1037回)-(2007/04/18(Wed) 20:44:22)
中博俊 さんの Web サイト
でも穴だらけ(Win-Dとかは回避できないとおもう)なので、VMWareServerみたいな製品とかでカバーすべき事柄のような気がしますが。
それかWindowsのTerminal Serverとかね。
引用返信 編集キー/
■2937 / inTopicNo.11)  Re[3]: バッチファイル内のアプリの逐次実行について
□投稿者/ はつね (143回)-(2007/04/18(Wed) 22:25:05)
はつね さんの Web サイト
No2903 (ティッキー さん) に返信
> といったことをやりたいのです(つまり、管理者以外の使用者にはVM(仮想マシン)しか見え
> ないようにしたい)。つまり、VMwareを立ち上げた直後に shutdown がかかってしまうとまず
> いわけです。

それはVMWare(VMWare ESX Serverでも無理)とかではなく、Terminal Serverなどで実現するものだと思います。

引用返信 編集キー/
■2938 / inTopicNo.12)  Re[7]: バッチファイル内のアプリの逐次実行について
□投稿者/ 渋木宏明(ひどり) (188回)-(2007/04/19(Thu) 01:05:15)
渋木宏明(ひどり) さんの Web サイト
どれ位のことを、どれくらいの手間と費用で実現したいのかな?
もう少し目標とか目的が明らかになれば、もっと適したソリューションがみつかるかも。
でも、当初「バッチでいっか」くらいの目論見ということは、大げさなことはしたくないのかな?

引用返信 編集キー/
■2943 / inTopicNo.13)  Re[4]: バッチファイル内のアプリの逐次実行について
□投稿者/ ちゃっぴ (4回)-(2007/04/19(Thu) 02:00:59)
ちゃっぴ さんの Web サイト
> 必要になったことが無いのでちゃんと調べたことがありませんが、例えば、エクスプローラに「マイドキュメント」しか表示できないようにしたり、スタートメニューから余分な項目を削ったりといった調整が出来るはずです>Windows
>
> # グループポリシーとかで設定するんだったかな???

いろいろできますし、そんなに馬鹿にしたものでも無いですよ。
結構深い部分で制限かけているようです。
# 仕様自体が完璧じゃないものはありますけどね。


引用返信 編集キー/
■2956 / inTopicNo.14)  Re[1]: バッチファイル内のアプリの逐次実行について
□投稿者/ ティッキー (4回)-(2007/04/19(Thu) 13:29:38)
皆さん、いろいろなご意見ありがとうございました。ティッキーです。
どこの枝につければいいのかわからなくなってきました。m(__)m

タイトル変更しようと思ったのですが、できないようなのでこのまま書きます。
そもそもの発端は社外に持ち出すPCのセキュリティ問題です(個人情報流出防止など)。
最近、個人の仕事用ノートをそのまま客先に持ち出さず、持出し専用ノートを使えと
いうことが社内でうるさく言われてます。
自分的には「そのためにPointsec入れてるんだから、別にいいじゃん」っていう気がしますが…

そこで、ネットカフェで使われるような、再起動したら毎回変更がロールバックされるソフト
(SCT)で暫定運用してるんですが、この持出しPCは基本的なオフィスソフトぐらいしかインスト
ールされてないため、客先でデモをやるたびに個人個人の環境づくり(たとえば、オラクル
入れたりとか)の再構築が必要となるので誰も使おうとしません(一応推進する立場なのでσ(^^;;;)。
じゃあ、使用者の個々の環境をVMにしてサーバーに置いといて持出すたびに入れ替えたら
どうかと思いました(入れ替えは管理者がホストOSからやる)。
ただ、使用者がホストOS上アクセスできて、そこに個人情報が置かれるとまずいという指摘
を受け、だったらホストOSが見れないようにすればということで、今回の書き込みに至り
ました(前置きが長いので前提を端折りました)。

結局、VM上には個人情報が入っているわけだし(メール情報など)、仕事上の機密データ
もしかりなわけで、結局、個人のノートをそのまま持出すのと何ら変わらないような気が
してきました(?_?)。Pointsec入ってるしぃ〜。この話ボツるかもです。(^^;;;;

引用返信 編集キー/
■2957 / inTopicNo.15)  Re[2]: バッチファイル内のアプリの逐次実行について
□投稿者/ Kozoo (10回)-(2007/04/19(Thu) 14:16:15)
プロファイルを分けてみてはどうでしょうか?
 通常業務→ドメインユーザー(local\PowerUser)としてログイン(ProfileA)
 デモ実演→ローカルユーザー(local\user)としてログイン(ProfileB)

ティッキーさんの要求を全て満たすか分かりませんが、
デモ程度であれば問題は無かったと記憶しています。
但し、デモ実演に必要なディレクトリ・レジストリへのアクセス権は手動で行った記憶があります。

ローカルユーザーは・・・という事であれば、移動プロファイルを利用するのも
アリなのかなあ・・・と(憶測です)

No2956 (ティッキー さん) に返信
> そもそもの発端は社外に持ち出すPCのセキュリティ問題です(個人情報流出防止など)。
> 最近、個人の仕事用ノートをそのまま客先に持ち出さず、持出し専用ノートを使えと
> いうことが社内でうるさく言われてます。
> 自分的には「そのためにPointsec入れてるんだから、別にいいじゃん」っていう気がしますが…
>
> そこで、ネットカフェで使われるような、再起動したら毎回変更がロールバックされるソフト
> (SCT)で暫定運用してるんですが、この持出しPCは基本的なオフィスソフトぐらいしかインスト
> ールされてないため、客先でデモをやるたびに個人個人の環境づくり(たとえば、オラクル
> 入れたりとか)の再構築が必要となるので誰も使おうとしません(一応推進する立場なのでσ(^^;;;)。
> じゃあ、使用者の個々の環境をVMにしてサーバーに置いといて持出すたびに入れ替えたら
> どうかと思いました(入れ替えは管理者がホストOSからやる)。
> ただ、使用者がホストOS上アクセスできて、そこに個人情報が置かれるとまずいという指摘
> を受け、だったらホストOSが見れないようにすればということで、今回の書き込みに至り
> ました(前置きが長いので前提を端折りました)。

引用返信 編集キー/
■2958 / inTopicNo.16)  Re[2]: バッチファイル内のアプリの逐次実行について
□投稿者/ 渋木宏明(ひどり) (189回)-(2007/04/19(Thu) 14:27:34)
渋木宏明(ひどり) さんの Web サイト
> 結局、VM上には個人情報が入っているわけだし(メール情報など)、仕事上の機密データ
> もしかりなわけで、結局、個人のノートをそのまま持出すのと何ら変わらないような気が
> してきました(?_?)。

そう思います。

防ぎたいのが「持ち出し→紛失などによる情報漏洩」ってことなら、VM 化しても情報の「詰め込み方」が少し変わるだけで、「情報が詰まったストレージを持ち歩く」ことに変わりはありません。

「持ち歩く情報」が制限されるので、有事の際の損失は低減する方向ですが、「持ち歩く情報」に「漏洩してはまずい情報」が含まれている場合、基本的なリスクにはそれほど変わりありません。

本来なら

・既にコメントが付いているように Terminal Service や MetaFrame などのリモートデスクトップ技術を使う。
・仮にオフィスが「一人一台」体制で XP 以上が稼動しているなら、インターネット→社内ネット経由でオフィスの自分のPCにリモートデスクトップ接続させる。

# Windows XP 以降のリモートデスクトップ機能はとても良く出来ています。

などの「情報を持ち歩かない」方向の解決策が適していると考えれますが、「持ち出し」前提となると「ネットワーク接続をどうやって確保するのか?」という別の問題が持ち上がります。

今なら、e-mobile やウィルコムの x8(だっけ?)接続の通信カードを使った定額アクセスで、社内ネット上のリモートデスクトップサーバにアクセスするってのも「あり」なのかもしれませんが。。。

引用返信 編集キー/
■2970 / inTopicNo.17)  Re[3]: バッチファイル内のアプリの逐次実行について
□投稿者/ ちゃっぴ (6回)-(2007/04/20(Fri) 00:44:46)
ちゃっぴ さんの Web サイト
> 本来なら
>
> ・既にコメントが付いているように Terminal Service や MetaFrame などのリモートデスクトップ技術を使う。
> ・仮にオフィスが「一人一台」体制で XP 以上が稼動しているなら、インターネット→社内ネット経由でオフィスの自分のPCにリモートデスクトップ接続させる。

ですが、この場合でもその local で動いている OS の機能を制限しないと Remote Desktop 経由で情報漏えいしちゃいます。

手間をかけたくないのであれば、そういう製品を購入するとよいかもしれません。
# そういや数年前 Windows Embedded でできたこの手の端末を検証してみました。

今ではいろいろあるらしい。。。
引用返信 編集キー/
■2971 / inTopicNo.18)  Re[4]: バッチファイル内のアプリの逐次実行について
□投稿者/ 渋木宏明(ひどり) (190回)-(2007/04/20(Fri) 06:43:37)
渋木宏明(ひどり) さんの Web サイト
> ですが、この場合でもその local で動いている OS の機能を制限しないと Remote Desktop 経由で情報漏えいしちゃいます。

この場合の local ってどっちの話ですか?
社内PCの方?

リモートデスクトップ接続中の話にはある程度のリスク(画面が見られる、(設定によっては)社内PCのディスクが見える、...)があると思いますが、それ以外にもありましたっけ?

引用返信 編集キー/
■2972 / inTopicNo.19)  Re[5]: バッチファイル内のアプリの逐次実行について
□投稿者/ はつね (144回)-(2007/04/20(Fri) 07:09:37)
はつね さんの Web サイト
No2971 (渋木宏明(ひどり) さん) に返信
>>ですが、この場合でもその local で動いている OS の機能を制限しないと Remote Desktop 経由で情報漏えいしちゃいます。
>
> リモートデスクトップ接続中の話にはある程度のリスク(画面が見られる、(設定によっては)社内PCのディスクが見える、...)があると思いますが、それ以外にもありましたっけ?

リモートデスクトップにしてもTerminal Serverにしても、接続元(local)にダウンロードさえしななければリスクがないように思います。切断しちゃったらlocalには何も残さないようにもできますよね。
Terminal Serverの場合は、localはディスクレスでもいけたはずですし(リモートデスクトップの場合は分からない)。

引用返信 編集キー/
■2978 / inTopicNo.20)  Re[6]: バッチファイル内のアプリの逐次実行について
 
□投稿者/ ちゃっぴ (7回)-(2007/04/20(Fri) 10:56:09)
ちゃっぴ さんの Web サイト
No2972 (はつね さん) に返信
> ■No2971 (渋木宏明(ひどり) さん) に返信
> >>ですが、この場合でもその local で動いている OS の機能を制限しないと Remote Desktop 経由で情報漏えいしちゃいます。
>>
>>リモートデスクトップ接続中の話にはある程度のリスク(画面が見られる、(設定によっては)社内PCのディスクが見える、...)があると思いますが、それ以外にもありましたっけ?

画面の capture とか ClipBoard 経由で copy されたりとか。
結局のところ Remote Desktop client を host する OS 側はいろいろと制限しないといけないです。

> リモートデスクトップにしてもTerminal Serverにしても、接続元(local)にダウンロードさえしななければリスクがないように思います。切断しちゃったらlocalには何も残さないようにもできますよね。

それは可能ですが、前述のような対策が必要です。

> Terminal Serverの場合は、localはディスクレスでもいけたはずですし(リモートデスクトップの場合は分からない)。

Remote Desktop client と Terminal Service client は一緒です。
もちろん Citrix とかのは別ですがね。
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -