• 締切済み

VBSの内容をJavaスクリプトで記述するとどうなりますか?

タイトルの通り、VBスクリプトでWindows2000リソースキットなどにあると言われている、reboot.vbsやlogoff.vbsやpoweroff.vbsなどをJavaスクリプトではどのように記述したらよいのでしょうか?例えば社員が使用するPCの起動時に、ある文書をブラウザー起動で表示させ、その内容に同意するか、しないかを選択させ、同意しない場合は、PCを強制ログオフさせようと考えています。また、同じようなことを実際別な方法で実施しているという方がいらっしゃいましたら、是非お知恵を貸してください。よろしくお願い致します。

みんなの回答

  • todo36
  • ベストアンサー率58% (728/1234)
回答No.7

>ある文書をブラウザー起動で表示させ、その内容に同意するか、しないかを選択させ、同意しない場合は、PCを強制ログオフさせようと考えています ログオンスクリプトですべて行えばいいでしょう。 言語は伝統的にvbsですが、Javascript(というか MS JScript)でも可能でしょう。 スクリプト(WSH)からIEを扱う方法は CreateObject("InternetExplorer.Application") で検索。

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.6

><body nunload="notAgree()">ってどこにどのように記述すればいいのでしょうか? HTMLを使って書いていたら <BODY> というタグがありますよね。 それを <BODY onunload="notAgree()">に変更します。 効果としては、ウィンドウを×ボタンで閉じたり、 メニューからファイル~閉じるで閉じようとすると実行されるようになります。 >先に頂いたJscript あれは、VBScriptです。 別のやり方として スクリプトの中に sub window_onunload notAgree end sub と書くこともできます。

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.5

>選択する前にブラウザを終了されたら? とりあえずは、 <body onunload="notAgree()"> しておけばいいかもしれません。 でも多分これもわかっていれば回避されると思う。

sk4505
質問者

お礼

再度ありがとう御座います。<body nunload="notAgree()">ってどこにどのように記述すればいいのでしょうか?申し訳ありません。まったくの無知でトホホ。先に頂いたJscriptと同じファイルに追記するんですか?

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.4

IEを使っている場合は、 <script language="VBScript"> <!-- sub agree() window.close end sub sub notAgree() dim sh set sh = CreateObject("WScript.shell") sh.Run "shutdown -l -f", 0 ,0 'ログオフ set sh = Nothing window.close end sub '--> </script> <button onclick="agree()">同意する</button> <button onclick="notAgree()">同意しません</button> みたいな感じでVBScriptがほぼそのまま書けるので、JavaScriptを使う必要もありませんが、VBScriptでできることは、JScript(IEでのjavascript)を使ってほぼ同様にできます。 ただまあ、他の人が指摘しているように、回避できると思いますので、あんまり意味はないかと思います。

sk4505
質問者

お礼

ありがとう御座います。さっそく試してみましたが、回避できました。意味がないって確かにその通りだとはっきりと確認しました。ブラウザーのXボタンを押してしまえば、同意するもしないもまったく関係なくなってしまいました。やはり別な方法で考えないと駄目なんですね。しかし知識がないし・・・。何か別な方法があったらまたアドバイスお願いできますか? よろしくお願い致します。

  • deadlock
  • ベストアンサー率67% (59/87)
回答No.3

そもそも、JavaScriptで強制ログオフやシャットダウンができたら、セキュリティホールになってしまいます。ネット上で悪さし放題ですよ。 できたとしても、JavaScriptは簡単に回避できるのでやる意味がないでしょう。 「Noだったら、子ウィンドウを無限に開き続けてフリーズさせる」とかなら割と簡単にできますが… #って、ホントにやっちゃだめですよ?

sk4505
質問者

補足

アドバイスありがとう御座います。「とかなら割と簡単にできますが…」って、その方法を教えて頂けないでしょうか。

  • edomin
  • ベストアンサー率32% (327/1003)
回答No.2

#1です。 「同意しない。」を選択する前にブラウザを終了されたら?

sk4505
質問者

補足

申し訳ありません。#1とは・・・?

  • edomin
  • ベストアンサー率32% (327/1003)
回答No.1

何のためにするのか判らないのですが・・・ ブラウザごと終了させてしまったらどういう記述にしても関係ないんじゃないですか?

sk4505
質問者

補足

PC利用規約を起動時に表示させ、内容に同意する場合はブラウザーを閉じ、通常通りPCを利用させます。また、同意しないを選択した場合には、ブラウザーごと閉じ強制的にログオフさせ、PCを使えないようにしたいと考えています。

関連するQ&A

  • JAVAとjavaスクリプトの関係 vb・VBS

    VBSとvb.netの関係・違いはわかるのですが JAVAとjavaスクリプトの関係はわかりません。 vb・VBSの関係と同じと考えて良いでしょうか?

  • VBスクリプトの配列数字をJAVAスクリプトで使うには

    表題があまり良くないですが VBSでページを作っています その中で ページ閲覧者がテキストボックスに値を記入したときに JAVAスクリプトのonchangeでJAVAスクリプトへ飛んで VBスクリプトで定義した配列の値を代入したいのですが うまくいきません 飛んでいった先のコードが <script type="text/javascript"> <!-- //値の代入 function hoge(FRM){ FRM.hoge1.value=ここにVBスクリプトの配列 } // --> </script> これだけのことなのですが 配列を直接数字で書くと FRM.hoge1.value=<%=atai(1)%> hoge1にはきちんと値が入力されます しかし この1と言う数字の所に FRM.hoge2.value の値をいれてやろうとすると イメージとしては FRM.hoge1.value=<%=atai(FRM.hoge2.value )%> なんですが、これではエラーがでます(当然ですよね) 色々"" でくくったり & や + ()などの 組み合わせでやってもうまくいきません どなたか正しい構文か方法を教えてください よろしくお願いします  

  • VBSでログを出す方法

    VBスクリプトのオートログインで成功、失敗に関わらずログを出したいのですがいい方法はないでしょうか? Set objLogin = objIE.Document.getElementsByTagName("INPUT") objLogin(0).value = ID objLogin(1).value = PASSWORD objLogin(2).click サイトにログインの可否をログに残したいのですが、どこでログの作成を入れたらよいのでしょうか? ログを新規に作るとき月ごとにファイルを作るかと思います。 ログファイルを探す?方法はどうしたらよいでしょうか? スクリプトを起動した瞬間に起動時間をいれログインできた時点でOKなり失敗した時点でNG入れるなんなりがあると思いますが・・・ どのようにすればよいでしょうか? 一応下記を参考にしていますが・・・ http://www.happy2-island.com/vbs/cafe02/capter00204.shtml

  • ジャバスクリプトを有効にする方法を教えてください。

    キャノンプリンター(TS8330)の説明動画を見ようとしたらジャバスクリプトを有効に して下さいと文字がでましたが、何をどのようにしたらよいかわかりません。 簡単な文書の作成とか、囲碁仲間とネット対局できる程度のPCの知識しかありません。 何方か、分かりやすくご指導ください、よろしくお願いいたします。 ※OKWAVEより補足:「NEC 121ware : Windows」についての質問です

  • Javaスクリプトのページが表示されないのはなぜ?

    質問の仕方が合っているか不安なのですが、どこをどういじってしまったのか、PCのJavaが無効になっているようで、一部の動画コンテンツやJavaスクリプトで他のページに飛ばす設定になっているページもそのまま開けたりしています。IEのインターネットプロパティの設定からセキュリティ→アクティブスクリプト→有効にする の設定にはなっています。詳しいことはわからないので一度全部有効にするの設定にチェックをつけて再起動してみましたが、それでもダメでした。Youtubeなどは見れますが、Gyaoなどは見れません。対処方法をどなたかご教授お願いいたします。ちなみにブラウザはIE6とFirefoxを使用しています。

  • vbスクリプトの引数の記述方法

    ネットワークドライブ名を変更したい為、以下のBATファイルとVBスクリプトを作成しました。 ですが、どうも引数が渡せていないようです。 どこが間違っているのでしょうか? どなたかご教授お願いします。 ◆BATファイル net use F: /delete net use F: \\○○\△△ set Drive = F set DriveName = PC_△△ cscript.exe "Rename.vbs" %Drive% %DriveName% ◆スクリプト(Rename.vbs) Dim oParam Dim strDrive Dim strName Set oParam = WScript.arguments strDrive = oParam(0)&":\" strName =oParam(1) With CreateObject("Shell.Application").NameSpace(strDrive) .Items().Item().Name = strName End with バッチファイルを実行すると、以下の内容になっており、引数が取得できていないようです。 cscript.exe "Rename.vbs" "" 実行時エラー:インデックスが有効範囲にありません。

  • vbsファイルをPC起動時に実行したい

    スタートアップにvbsファイルを入れています。 タイトルのようにPC起動時のみこのvbsファイルを実行したいのですが ログオン時にも実行されてしまいます。 会社のPCがセキュリティの関係上15分単位でログオフしてしまうため 一日に何回もログオンしなければなりません PC起動時のみ実行できるようにできるのかご教示ください

  • Lenovo-6730.vbs

    PCを起動すると下記のエラーが出て、管理者権限じゃないとアプリが開けないようになりました。 スクリプト: C:ProgramData\Lenovo-6730.vbs エラー: 指定されたファイルが見つかりません コード: 80070002 開けないのはChromeやFirefoxなどのデスクトップアプリです。 ペイントなど開けるものもあります。 ※OKWAVEより補足:「Lenovo:ノートブック(ThinkPad)」についての質問です。

  • VBS 入力可能状態を判別できますか?

    いつもお世話になります。 現在、社内でVBSで以下のようなものを作成しているのですが、是非ともお知恵をお貸しくださいませ。 EXCELをWindows起動時に立ち上げ、 アイドル状態(入力可能状態)になった後、 何もせずにExcelを終了する というVBSを作成する必要があるのですが、 これを実現するにあたって、ネットなどで検索しながら自分で作成したところ、確かに起動→終了という動作は問題なくするのですが具体的には特定のプロセスを終了するというような書き方をしているために、起動してプロセスが上がった瞬間に次のプログラムコードにて、そのプロセスを終了してしまいアイドル状態になるまえに終了してしまう状況です。 勉強不足で詳しくわからないのですが、VBではアイドル状態か否かを判断することができる?らしいのですがVBSにて同じことができるのかどうかはわかりませんでした。 現在は起動したあとに次の処理が実行されるまでX秒待つというようなコードを入れてごまかしながら作っていますが、やはり状況、環境によって処理のタイミングにばらつきが出てしまうので、なんとか入力可能状態まで待った上で終了というフローにしたいのですが・・・・ どのように作成すればよいでしょうか?ご回答のほどお願いいたします。 尚、開発環境がそろっていないので、できればVBSで作成したいと思っております。 VBSは社内のGPOよりログインスクリプトで配布する予定です。 よろしくお願いいたします。

  • シャットダウンスクリプトの記述

    ドメインに参加している WinXP クライアントから、ワークグループ環境の複数台の Windows Server 2003 (主に) に対して ping を実行し、ping に対して応答があった場合はシャットダウンするスクリプトを記述したいと考えています。 # ワークグループ環境の Windows Server 2003 は検証環境で、社内セキュリティポリシーの運用上ドメインに参加できません。 この場合、 1. 複数のマシンに ping を打つ 2. 1 で応答がかえってくれば管理者の資格情報を使用してログイン 3. シャットダウンを実行 という流れになると思います。 そして、最終的には 1 が成功した場合に If 構文で 2、および、3 を実行する、という ように書けば一連の処理は成功すると考えています。 現在上記 1~3 の処理で細分化し、それぞれについて動作確認をとっています。 しかし、2、および、3 を実行してもうまくいかないため、これらについて伺いたく 質問させていただきます。 2 について 以下の構文を組んでいますが、vbs を実行すると、後述のエラーダイアログが表示されます (対象 PC やアカウント名などはダミーとご認識ください)。 別の資格情報 (接続先マシンの管理者アカウント) を指定して接続できるコードをご教授ください。 ----- Const WbemAuthenticationLevelPktPrivacy = 6 strComputer = "atl-ws-01" strNamespace = "root\cimv2" strUser = "Administrator" strPassword = "4rTGh2#1" Set objWbemLocator = CreateObject("WbemScripting.SWbemLocator") Set objWMIService = objwbemLocator.ConnectServer (strComputer, strNamespace, strUser, strPassword) objWMIService.Security_.authenticationLevel = WbemAuthenticationLevelPktPrivacy Set colItems = objWMIService.ExecQuery ("Select * From Win32_OperatingSystem") For Each objItem in ColItems Wscript.Echo strComputer & ": " & objItem.Caption Next ----- エラー : RPC サーバーを利用できません。 コード : 800706BA ソース : SWbemLocator 3 について 以下の構文を組んでいますが、エラーは表示されないものの、シャットダウンが開始されません。 ----- On error resume Next Const LogOff = 0 'ログオフ Const REBOOT = 2 '再起動 Const SHUTDOWN = 8 'シャットダウン Dim objWMIService Dim colOperatingSystems Dim objOperatingSystem Set objWMIService = GetObject("winmgmts:{impersonationLevel= impersonate,(Shutdown)}\\" & strComputer & "\root\cimv2") Set colOperatingSystems = objWMIService.ExecQuery("Select * from Win32_OperatingSystem") For Each objOperatingSystem in colOperatingSystems objOperatingSystem.Win32Shutdown(SHUTDOWN) Next Set objWMIService = Nothing Set colOperatingSystems = Nothing Call ErrorCheck End Function ----- また、試しに objNetwork.MapNetworkDrive を使用してサーバーの IPC$ に接続しログインした後に上記処理を試行しましたが、 シャットダウンが進みませんでした。 何卒よろしくお願いいたします。

専門家に質問してみよう