![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
option explicit
on error resume next
dim objie, objwshell
set objwshell = createobject("wscript.shell")
objwshell.appactivate "microsoft internet explorer"
set objie = createobject("internetexplorer.application")
objie.width = 380
objie.height = 100
objie.navigate "about:blank"
objie.document.write "<html><head><title>終了処理</title><script language='vbscript'>" & vbcrlf
objie.document.write "option explicit" & vbcrlf
objie.document.write "function osu()" & vbcrlf
objie.document.write "dim aaa" & vbcrlf
objie.document.write "Set aaa = CreateObject('Wscript.Shell')" & vbcrlf
objie.document.write "aaa.run 'wscript ログオフ.vbs', 1, true" & vbcrlf
objie.document.write "set aaa = nothing" & vbcrlf
objie.document.write "end function" & vbcrlf
objie.document.write "</script></head>" & vbcrlf
objie.document.write "<body bgcolor='#CCCCCC' style='overflow:hidden'><form name='form1'>" & vbcrlf
objie.document.write "<input type='button' name='button1' value='ログオフ' onClick='osu()'>" & vbcrlf
objie.document.write "</form></body></html>" & vbcrlf
objie.visible = true
objie.toolbar = false
objie.statusbar = false
objie.resizable = false
set objwshell = nothing
set objie = nothing
上記のプログラムを[.vbs]という拡張子で保存。
これは、vbsファイルをクリックするとIEの画面が出て、ログオフのボタンをクリックするとログオフするというものなのですが、うまくいきません。
vbsの中にまたvbsを記述しているからでしょうか?
A 回答 (3件)
- 最新から表示
- 回答順に表示
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_12.png?5a7ff87)
No.3
- 回答日時:
まず念のため、今回 aonagi さんがセキュリティ設定を変更した IE はセキュリティ的に見て危険な状態になっているってことだけは認識しておいてくださいね。
インターネットのどこかのページに記述されている VBScript を実行してしまう可能性があります。
そのスクリプトにはレジストリを操作するコードが書かれている可能性もあります。
> ところで、どうやったらパソコンに詳しくなれますか?
これは新たに質問したほうがいいと思います。
コンピューター [技術者向け] > プログラミング > その他(プログラミング)
あたりがいいんじゃないでしょうかね。
http://oshiete1.goo.ne.jp/c260.html
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_12.png?5a7ff87)
No.2
- 回答日時:
> しかし、ボタンをクリックしたら「エラー:ActiveXコンポーネントはオブジェクトを生成できません:wscript.shell」というのがでてきました。
> これはどんなエラーなのでしょうか?
だから言ったじゃないですか。
> コードの不具合は以上ですが、インターネット オプションでのセキュリティの問題が出そうですね。
> A) 上記書き込み元 VBScript によって生成されたページ
> B) A のソースを HDD に HTML として保存して開きなおしたページ
> A= インターネットゾーン
> B= マイ コンピュータ
VBScript の下記行をコメントアウトしてもう一度実行してみてください。
objie.statusbar = false
生成された IE ウィンドウのステータスバーに「インターネットゾーン」って表示されてますよね?
つまりセキュリティが一番堅い状態で実行されているのです。
普通にどこかのページを見ててページに表示されているボタンを押すとローカルにある VBScript ファイルを実行されちゃうのって問題ですよね?
それと同じ状態だ、と IE が判断してるのです。
当方 IE 7 ですが、インターネット オプションで [セキュリティ] タブで「インターネット」を選択して [レベルのカスタマイズ] をクリック。
「スクリプトを実行しても安全だとマークされていない ActiveX コントロールの初期化とスクリプトの実行(セキュリティで保護されていない)」を「有効にする(セキュリティで保護されていない)」にしてから実行してみてください。
実行すると IE のウィンドウ上部に「現在のセキュリティ設定では、お使いのコンピュータが危険にさらされています。セキュリティの設定を変更するには、ここをクリックしてください...」という説明が出ます。
この警告の×を押してもいいですが、かろうじてウィンドウに表示されている [ログオフ] ボタンをクリックすると "ログオフ.vbs" を実行しようとします。
(ログオフ.vbs の中身による実行結果は存じません・・・)
この回答への補足
見事に実行してくれました。
全てあなたのおかげです。本当にありがとうございました。
ところで、どうやったらパソコンに詳しくなれますか?
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_12.png?5a7ff87)
No.1
- 回答日時:
こういう場合はまず、うまく行った場合をイメージし、実際に生成される(事を期待する)HTML を書いてみましょう。
すると VBScript がおかしい旨のエラーが出るはずです。
んでよーく見てみると、HTML に書かれているスクリプトがおかしいことに気づきます。
HTML のルールでは ' は " の代わりに使用できますが、
VBScript のルールでは ' はコメントであり、' よりも後ろがコメントアウトされてしまいます。
すると以下のようなスクリプトが書いてあることになってしまいます。
Set aaa = CreateObject(
aaa.run
(コメントと見なされる部分は書いてません)
したがって、ブラウザでホストされる VBScript 内で使っている ' を " に変える必要があるため、書き込み元の VBScript では下記のようにします。
objIE.Document.Write "Set aaa = CreateObject(""Wscript.Shell"")" & vbCrLf
objIE.Document.Write "aaa.run ""WScript ログオフ.vbs"", 1, true" & vbCrLf
コードの不具合は以上ですが、インターネット オプションでのセキュリティの問題が出そうですね。
A) 上記書き込み元 VBScript によって生成されたページ
B) A のソースを HDD に HTML として保存して開きなおしたページ
A= インターネットゾーン
B= マイ コンピュータ
がんばってください。
この回答への補足
適確な指示ありがとうございます。
今まではファイルをダブルクリックした時点でエラーが出ていましたが、今回からは出なくなりました。
しかし、ボタンをクリックしたら「エラー:ActiveXコンポーネントはオブジェクトを生成できません:wscript.shell」というのがでてきました。
これはどんなエラーなのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP PHPのエラーの解消法について教えて下さい。 1 2023/02/06 10:48
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- HTML・CSS cssが効かなくて困ってます 1 2023/01/01 23:57
- PHP php テーブルが作成できない 1 2022/11/17 23:41
- MySQL php テーブルを作れない 2 2022/11/17 18:22
- PHP 入力した部分を表示させたまま(保持)するにはどうすれば良いでしょうか? 1 2023/01/25 11:14
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
- HTML・CSS html/cssで要素が出てこなくて困ってます 1 2022/12/31 16:59
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- Excel(エクセル) フォルダ内のワードファイルをPDFに一括変換するVBA 3 2023/06/09 16:51
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
htmlに埋め込んだメディアプレ...
-
VBA public変数はどのようなこ...
-
他のフォームから別のフォーム...
-
VB
-
エクセルVBAでテキストボッ...
-
チェックボックスを操作できな...
-
C#のループでtextboxに値を入れ...
-
VB.NETでのイベントの途中終了
-
テキストボックスに入る文字を...
-
テキストボックスに大文字を
-
visual basic初心者です。 visu...
-
プロシージャまたは関数の引数...
-
Picture box の サイズを変更
-
256色で任意の色を作成する時、...
-
C言語のサフィックスについて
-
演奏記号の・・・・
-
タイムアウトする仕組みを作りたい
-
VBAのフォーム カーソル移動
-
pthread_cond_waitとptherad_co...
-
subsequentとnextの違いってな...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VS CodeでTEXファイルにPDF形式...
-
htmlに埋め込んだメディアプレ...
-
vbsでスクロール位置を指定して...
-
VBA public変数はどのようなこ...
-
C#のループでtextboxに値を入れ...
-
エクセルVBAでテキストボッ...
-
VBAでcallで呼び出したsubを終...
-
sublimit textっていうエディタ...
-
他のフォームから別のフォーム...
-
VB.NETでのイベントの途中終了
-
C言語のサフィックスについて
-
三項でたとえば交換って
-
【VB6.0】 あるフォームから他...
-
アクセスできない保護レベルエ...
-
タイムアウトする仕組みを作りたい
-
VBAで入力数値について
-
チェックボックスを操作できな...
-
二点の座標から距離や角度を求...
-
Excel VBAでsub,dimは何の略?
-
visual basic初心者です。 visu...
おすすめ情報