No.3ベストアンサー
- 回答日時:
>もう少しだけタイミングの事を詳細に教えて頂ければと思います。
申し訳ありませんが、随分前に調べた時と状況は変わっていないと思いますので、スタートアップ及びシャットダウンスクリプトの実行タイミングについては詳細な資料が無いようです。
一応参考のURLを記載します。
http://itpro.nikkeibp.co.jp/free/NT/WinReadersOn …
http://www.monyo.com/technical/windows/33.html
経験則ですが、スタートアップ及びシャットダウンスクリプトの実行タイミングではネットワークは生きていましたのでDB接続のようなネットワーク接続が必要なスクリプトも動作するのではと思っています。
ちょっと確認ですが、状態を見たいのはPCの起動と終了でいいんですよね。
つまりPCを起動して、ログオンせずにシャットダウンした場合にもスタートアップ及びシャットダウンスクリプトの実行されるのですが、これでいいのですよね。
ログオン及びログオフのタイミングならば話がすこし変わってきますので。
No.4
- 回答日時:
>全てのPCでというのが、どうしても台数が多い為、難しいです、、、、
少し冷静になりなさい。
最初の質問の内容通りの「起動時と終了時に動作するプログラムを仕込む」のも「全てのPCで行う必要がある」のですよ。
なので「全てのPCで何らかの作業を行う」のは「絶対に避けて通れない」です。
で、何も作らなくて済むのが「Windowsの標準の機能である、ファイル共有の機能を利用する」と言う、当方の手法。
この手法の利点は「どこかのPCが立ち上がっているかダウンしているかを調べるだけなら、Windows標準のコマンドだけで出来る」と言う点。
全てのPCでの作業が嫌なのであれば(「どうしても必要な事なのに「台数が多い」と逃げるのは、単なる「逃避」であり「面倒だから嫌だ」と言っているのと同等)、定期的に「ネットワークコンピューターに接続を試みるAPIを呼び出すプログラム」を作って常駐させる必要がある。
これならファイル共有の設定がされていないPCであっても、コンピュータ名(または直IPアドレス)でアタッチする事は可能なので、監視プログラムで「アタッチに成功したら起動中、アタッチに失敗したらダウン中」と判断が出来る。
あと、IPアドレスが固定であれば「IPアドレスにPINGを飛ばして、反応があれば起動中、タイムアウトすればダウン中」と言う、超簡単な調べ方もある(が、PCによっては「PINGされても反応を返さない」と言う設定になってる場合や、電源が入っているがWindowsが起動されてない場合もPINGに応答してしまうので、PINGでは正確な判断は出来ない。
それと、起動されているPCの一覧が欲しいだけなら、コマンドプロンプトで
NET VIEW
と打ち込むだけで可能。これを
NET VIEW > ACTIVE_LIST.TXT
とかリダイレクトすれば、結果をテキストファイルに残せる。
あとは、そのテキストファイルを読み込んで「リストにあれば起動中、リストに無ければダウン中」と表示するだけの初心者でも作れるプログラムを作れば、目的は達成できる。
No.2
- 回答日時:
>プログラムにてPCの起動時、終了時にデータベースにアクセスし、PCの電源が
>入っているか?切れているか?の情報を更新し、その書き込まれたデータベースで
>PCの状態を掴むような事をしたいと考えています。
そんな複雑怪奇なプログラムは不要です。
すべてのPCで「ファイル共有」を有効にして、どこか適当なフォルダを、何か適当な共有名で、他PCに共有開放します。
そして、共有開放したフォルダに、適当な「固有のファイル名」のファイルを作成しておきます。
他PCでは、コマンドプロンプトの「NET」コマンドを使って、接続を確立できるかどうかを調べます。
例えば、Zドライブが未使用のドライブレターとして空いていて、固有のファイル名が「MARKFILE.TXT」なら、バッチファイルで
NET USE Z: /DELETE
NET USE Z: \\調べたいPCのコンピュータ名\共有名
IF EXIST Z:\MARKFILE.TXT GOTO OK
電源が入っていない場合にやりたいコマンド(データベースに書き込むなど)
GOTO END
:OK
電源が入っている場合にやりたいコマンド(データベースに書き込むなど)
:END
と言うのを作って動かせば良いです。
ファイル共有は「起動すれば勝手にオンになる」し「終了時は何もしなくて良い」ので、起動時や終了時に、複雑な仕掛けを施す必要はありません。
バッチファイルを、以下の内容にすれば、調べたいコンピュータ名を引数で与えて可変に出来ます。
NET USE Z: /DELETE
NET USE Z: \\%1\共有名
これで呼び出したあと、呼び出し元のプログラムで「Z:\MARKFILE.TXTが存在するかチェック」すれば、そのコンピューターがダウンしているかどうか判ります。
データベースなんか要りません。起動時と終了時の小細工も要りません。質問者さんは「考えすぎ」です。
この回答への補足
chie65535様、ご回答ありがとうございます。
全てのPCでというのが、どうしても台数が多い為、難しいです、、、、
少なくとも何かのプログラムを常駐させなければならないかとは思われますが、そのプログラム等で、
何分間隔かで起動を確認し、自分のPCが起動していたらDBに更新というような事ができないかと考えています。
結果として、DBに書き込まれなかった時間がある程度経過したら、DB側の方でシャットダウン
されたんだなと認識する。
そんな事は難しいでしょうか、、、
教えて下さい。
No.1
- 回答日時:
OSはWindowsということでいいですよね。
やりたいことは、スタートアップスクリプトとシャトダウンスクリプトで出来るのではないかと思います。
スタートアップスクリプト及びシャトダウンスクリプトにデータベースにアクセスするスクリプト等を実行するように設定します。
スクリプトはバッチでもVBSでWindowsで実行出来るものは起動出来ると思います。
設定は、Active Directoryのメンバでない場合には「ローカルコンピュータポリシー」で設定します。
コンピュータの構成\Windowsの設定\スクリプト
Active Directoryのメンバならばグループポリシーでも設定出来ますのでこちらはADの管理者に確認して下さい。
注意点としては、このスクリプトはローカルシステム権限で動作します。
データベースアクセスなどではスクリプト内でログインなどを適切に設定する必要があります。
だいたいの起動のタイミングは、こんな感じだと思います。
スタートアップスクリプト:サービス群が起動した後
シャットダウンスクリプト:ログオフの後、サービス群停止の前
この回答への補足
maesen様、ご回答ありがとうございます。
環境はWindowsでした。 説明不足で申し訳ありません。
もう少しだけタイミングの事を詳細に教えて頂ければと思います。
何から何まで申し訳ありませんが、教えて下さい。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- デスクトップパソコン 「自動修復でPCを修復できませんでした」と表示されPCが起動しないのですが対処法はありますか? 5 2022/05/13 09:16
- Windows 7 Media Playerが開かない。ファイルアイコンを右クリックしても「プロパティ」が表示されない。 2 2023/02/05 14:45
- デスクトップパソコン ゲーミングPCが起動しない場合のアドバイスをいただきたいです。 こんにちは。 本日、私の使用していた 4 2023/07/11 12:49
- デスクトップパソコン PCの通電はするがモニタが黒い画面のまま何も表示はじまらない。 7 2023/01/10 09:36
- オンラインゲーム PCのオンラインゲームが急に重くなった 4 2022/10/11 05:15
- デスクトップパソコン windows7を使っているパソコンでの質問です。先日動作が遅く再起動かけると「windowsを起動 9 2022/06/16 21:31
- BTOパソコン OSの入ったHDDがBIOSには認識されるが起動しない 5 2022/04/15 00:47
- Wi-Fi・無線LAN PC起動でスマホ連携が出来無くなる 2 2023/01/09 08:22
- BTOパソコン 数時間使用しない状態からPCを起動に失敗後、 自動修復画面で再起動をすると正常に動き出す 3 2022/09/26 22:01
- Windows Me・NT・2000 教えてほしいです! ガレリアPCを使用してます。 最近、起動してから少し経つと画面が暗くなりシグナル 1 2022/04/28 11:27
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
バッチファイル 特定ウインドウ...
-
EXCELをバッチコマンドで...
-
VB.NETでDOSコマンドの複数実行
-
バッチファイルでAPを終了さ...
-
c#でコマンドプロンプトを実行...
-
ショートカットの作成とコピー
-
PL/SQLで作成したストア...
-
batファイルで立ち上げたaplを...
-
PCの起動・終了時の処理に関して
-
VB.NETでコマンドプロンプトの操作
-
VBAからキャッシュを削除する方...
-
ExcelVBAにてアプリをタスクマ...
-
64bitのwindowsサーバーで32bit...
-
サーバからレスポンスが戻って...
-
秀丸でソフトをコマンドライン...
-
gccがコマンドプロンプト上で使...
-
Visual basic6.0からショートカ...
-
バッチファイルにて複数のプロ...
-
Shiftキーを押しながら起動
-
一定周期ごとのバッチ処理
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
バッチファイル 特定ウインドウ...
-
ExcelVBAにてアプリをタスクマ...
-
EXCELをバッチコマンドで...
-
stable diffusionのインストー...
-
batファイルで立ち上げたaplを...
-
ショートカットの作成とコピー
-
exe間での引き値の受け取り方法
-
VB.NETでDOSコマンドの複数実行
-
バッチファイル実行時に起動す...
-
VB.NETでコマンドプロンプトの操作
-
プログラムを実行すると、なぜ...
-
c#でコマンドプロンプトを実行...
-
gccがコマンドプロンプト上で使...
-
VBAからキャッシュを削除する方...
-
64bitのwindowsサーバーで32bit...
-
UWSCについて
-
ショートカットのリンク先が参...
-
バッチファイルからftpを実行時...
-
Shiftキーを押しながら起動
-
batからvbs起動
おすすめ情報