• 締切済み

vbscriptをHTMLに埋めるとエラーが出る

下記のvbscriptをHTMLに埋める手段を考えています。 <SCRIPT LANGUAGE="VBScript">で入れると、 ActiveX コンポーネントを作成できません。:GetObject とエラーが出てしまいます。回避方法をご教授ください。 Dim usr,group,ComputerName,UserName,strADsPath ComputerName = "server" 'コンピュータ名 UserName = "testuser" 'ユーザ名 strADsPath = "WinNT://" & ComputerName & "/" & UserName & ",user" set usr = GetObject(strADsPath) For Each grp In usr.Groups MsgBox "グループ名: " & grp.Name Next

みんなの回答

回答No.2

「FSOと同じようにローカルリソース扱いになってしまって、 ブラウザからはセキュリティの関係ではねられてしまう」 が正解っぽいですね。 とりあえず、対象サイトを「信頼済み」に設定したら動くかも。

akaakiha
質問者

補足

ローカルファイルだったものを、サーバにアップロードし、信頼済みにアドレスを追加し、ステータスバーにも信頼済みサイトと出ましたが、同じエラーが出ました。 申し訳ありません、関係はないようです。

  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.1

当然、IEですよね。 何がやりたいのか今一わかりませんが、 「カレント オブジェクトのインスタンスがあるとき、または、既に読み込まれたファイルを使用してオブジェクトを作成するときは、GetObject 関数を使用します。カレント オブジェクトのインスタンスがなく、ファイルを使用してオブジェクトを作成しないときは、CreateObject 関数を使用します。」 set usr = CreateObject(strADsPath) にしてみればどうでしょう?

akaakiha
質問者

補足

ユーザ名から、AD上の所属グループを取得したいと思っています。 多数のユーザが使うことから、WinXPであれば動くというものにしたいと思っています。 <HTML> <HEAD></HEAD> <SCRIPT LANGUAGE="VBScript"> <!-- Sub cmdChange_OnClick Dim usr,group,ComputerName,UserName,strADsPath ComputerName = "COM1" 'コンピュータ名 UserName = "testuser" 'ユーザ名 strADsPath = "WinNT://" & ComputerName & "/" & UserName & ",user" set usr = CreateObject(strADsPath) For Each grp In usr.Groups MsgBox "グループ名: " & grp.Name Next End Sub --> </SCRIPT> <BODY> <CENTER> <FORM NAME="frmForm"> <Input Type = "Button" NAME="cmdChange" VALUE="ここをクリック"><p> </FORM> </CENTER> </BODY> </HTML> とした状態で実行すると ActiveXコンポーネントはオブジェクトを作成できません。 WinNT://COM1/testuser,user と出ます。 HTMLに起こさず、vbsとしてであれば問題なく(GetObjectで)稼動します。

関連するQ&A

  • ローカルユーザー削除スクリプト作成(VBScript)

    ローカルユーザー削除スクリプト作成(VBScript) 先日、ネットワーク上のWindowsXPに、任意の管理者権限付きユーザーをVBScriptを用いて作成しました。(スクリプトは自身で作成しました) 本日、このユーザーは必要なくなったので、削除するスクリプトを作成しようとしましたが、うまく動かないのでご教授いただければ幸いです。 スクリプトを下記に記します。 スクリプトのユーザー作成部分です。うまく動いてくれました。 Set objComputer = GetObject("WinNT://" & strComputer & ",Computer") Set objNewUser = objComputer.Create("user", strUserName ) Set objAdminGroup = GetObject("WinNT://" & strComputer & "/Administrators,group") *strComputerは、ネットワーク上のPC名。strUserNameは、任意のユーザー名です。 スクリプトのユーザー削除部分です。 Set objComputer = GetObject("WinNT://" & strComputer & ",Computer") Set objNewUser = objComputer.Delete("user", strUserName ) *strComputerは、ネットワーク上のPC名。strUserNameは、任意のユーザー名です。 ユーザー作成の情報は、数多く見つけたのですが、削除の方法は見つけることは出来なかったです。ですので、objComputer.Delete("user", strUserName )この辺は自身の推測で記述しました。 作成がこの記述なら、削除はこんな感じかなって思いまして…。 情報でもよろしいので、ご教授お願いします。

  • Windowsアクセス権でグループにグループを追加

    Windowsファイルサーバーへのアクセス権設定を行っています。 http://okwave.jp/qa/q5378802.html この質問を参考にして、ユーザーの追加とグループの追加はできました。 今回、グループAのメンバーに、別のグループBを登録したいのですが出来ませんでした。 Set objGroup = objDomain.GetObject("group", pGroupName) objGroup.Add ("WinNT://" & ComputerName & "/" & pUserName) この部分で、pUserName="ユーザー1"・・・○登録できました この部分で、pUserName="グループB"・・・×登録できませんでした グループのメンバーに、別のグループを登録する方法が分かる方がいましたら教えてください。 お願いいたします。

  • Linuxにおけるグループ管理について

    linuxのグループについて教えてください。CentOS7を使っています。 usermod/useradd -g でグループを変更・追加した場合、/etc/groupは更新されないのでしょうか。 gpasswd -a でユーザをグループに追加した場合は更新されることを確認しました。詳細は以下です。 1) グループを作成して確認する。 # groupadd testgroup # grep testgroup /etc/group testgroup:x:2002: 2) ユーザを作成し既存グループに追加。/etc/groupは更新されない。idコマンドだと追加されている。 # useradd testuser -g testgroup # grep testgroup /etc/group testgroup:x:2002: # id testuser uid=1005(testuser) gid=2002(testgroup) groups=2002(testgroup) 3) gpasswd -aを利用。/etc/groupが更新されている。idコマンドの結果に変化はなし。 # gpasswd testgroup -a testuser Adding user testuser to group testgroup # grep testgroup /etc/group testgroup:x:2002:tesetuser # id testuser uid=1005(testuser) gid=2002(testgroup) groups=2002(testgroup) なぜこのような挙動になるのでしょうか。 /etc/groupはどのような場合に更新されるのでしょうか。 どなたかご存知の方、ご教示お願いします。

  • MySQLで差集合を2重で使うには?

    以下の3つのテーブルがあります。 レコードも一緒に示しておきます。 grp:グループ名(と管理者)  name(グループ名)、admin(管理者ID) belong:各グループの所属名簿  grp(グループ名)、user(所属ユーザのID) reserve:グループ参加予約中ユーザのリスト  grp(グループ名)、user(申込みをしたユーザのID) ここで、あるユーザIDに対し、 「参加も参加予約もしていないグループ」の表を取り出したいのです。 id001が参加していないグループの表は以下のSQL文でできました。 SELECT grp.name FROM grp LEFT JOIN belong ON grp.name = belong.grp WHERE belong.user != "id001"; この表からさらに参加予約しているグループを排除するにはどうすればいいでしょうか? お願いします。

    • ベストアンサー
    • MySQL
  • objIE = CreateObject エラー 

    ブラウザにHTMLのINPUTタグで作成したボタンを押すと、 VBSに引数が渡されて、VBSで他のホームページが開くプログラムがあるのですが、 VBScriptでInternetExplorerのウィンドウを新しく作るところで [Set objIE = CreateObject("InternetExplorer.application")] 「Activexコンポーネントはオブジェクトを作成できません。と」エラーが出て止まります。 富士通製PC(FMV ESPRIMO D550/A)WindowsXPダウングレード済み IE8 のみですが、この表示が出て困っています。 他のパソコンでは、ActiveXのプログラム起動確認ダイアログは表示されますが、 問題なく動きます。 このプログラムは、HTMLとVBScriptを使用しています。 また、デスクトップにHTMLとVBScriptが貼り付けてあるため、 Internet Explorer のマイ コンピュータ ゾーンのセキュリティ設定で動いています。 Activexコンポーネントはオブジェクトを作成できません。のエラーから いろいろ調べたのですが、IE のマイ コンピュータ ゾーンのセキュリティ設定で HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\0 "1201"=dword:00000001 (マイコンピュータ ゾーン セキュリティ設定スクリプトを実行しても安全だと マークされていないActiveX コントロールの初期化とスクリプトの実行) 1201が1になっているのは確認して、レジストリを消して「"1201"=dword:00000001」を 再入力して再起動してもダイアログが表示されることがありません。 Activexコンポーネントはオブジェクトを作成できません。とエラーが出て止まります。 グループポリシーでIEのセキュリティゾーンの設定は特にやっていません。 (このパソコンはInetres.admのファイルは読み込まれていませんでした。) また、「"1201"=dword:00000000」に設定してパソコンを再起動すると、 ダイアログは表示されませんが、プログラムが動くようになります。 「"1201"=dword:00000003」3の場合は無効のため「Activexコンポーネントは オブジェクトを作成できません。と」エラーが通常通り止まります 後、どのあたりを見れば解決できるかわからないため、 誰かわかる方がいらっしゃいましたら、よろしくお願いいたします。

  • CreateObject("Excel.Application")でVBScript実行時エラー

    ActiveServerPage(サーバーサイド)でExcelを起動させ データベース(SQLServer)より取得したデータをExcelに貼付け 保存させたいのですが。 2台のPCでは正常に動作するものの、もう1台のPCで実行すると 以下エラーが発生します。 ---------------------------------------------- Microsoft VBScript 実行時エラー エラー'800a01ad' ActiveXコンポーネントはオブジェクトを作成できません。 :'Excel.Application' /××/××/××.asp 行705 ---------------------------------------------- ↓705行目 <% .. set ○○ = CreateObject("Excel.Application") .. %> Microsoftサポート技術情報の [IIS]ASPがVBScript実行時エラー"800a01ad"を返す http://support.microsoft.com/default.aspx?scid=kb;ja;JP194801 レジストリを確認しましたが、3台とも同じ設定でした。 またExcelファイルのアクセス権をEveryOneフルコントロールに設定し 実行してみましたが状況が変わらず・・・。 クライアントサイドのVBScriptでExcelを起動させて 見た所、問題なく起動終了しました。 IISの問題なのでしょうか? ちなみに環境はWinNT4.0、IIS4.0(SP6)、Excel2000(SR-1)です。 同様のケースで過去に解決された方、または良い案がある方。ご教授下さい。

  • net コマンド

    2000/xpでは net user ユーザー名 でユーザー情報が出ます。vistaでも可能。 net localgroup grp1 /add user1 とやるとuser1にgrp1グループを追加できます。 net localgroup administratos /add user1 とやるとuser1にadministratosグループを追加できます。 でもvistaではアクセス拒否されます。 なぜでしょうか? administrator権限のあるユーザーで実行しているのですが失敗します。

  • AccessVBAで実行時エラー'429'が出ます

    ACCESS2000,WindouwsME ACCESSから既存のEXCELブックを呼び出そうとしていますが、           略 EXCEL名 = S2 & "XXX.xls" Set xls = GetObject(EXCEL名, "Excel.Sheet")        略 の、2行目で以下のエラーが出てしまい困っています。 実行時エラー'429' ActiveXコンポーネントはオブジェクトを作成できません。 動かすパソコンの環境で、出る時と出ない時があるようです。 VBEのツールメニューから参照設定を確認しているつもりですが、 ここの理解も含めて原因が良くつかめません。 解決策をコメントできる方がおられましたらお願いいたします。

  • VBS:文字列を元に外部リストから情報を抽出したい

    自分のユーザー名を元に、外部リストから任意の情報を 取得するVBScriptを作成したいです。 【検索条件】 1.一列目の列Aから自分のユーザー名を検索(例では2件ヒット) 2.ヒットした内容から3列目の文字列を抜き取る 3.4列目が存在する場合は4列目(概要)を抜き取る 3.msgbox等でただ表示させるだけ。 【外部リスト例:list.txt = ユーザー名,グループ,文字列,概要】 ----------------------- ABC,123,AAAAAAAAAAAAA 123,ABC,AAAAAAAAAAAAA ABC,123,BBBBBBBBBBBBB,AAA 123,ABC,BBBBBBBBBBBBB ----------------------- 【理想の動き】 --------------------------------------------------------------------- (1) ユーザー名 UserName = "ABC" (2) Forで外部リストから一列目UserNameを検索(例の場合2件) for ・1回目、1行目のABCの内容はAAAAAAAAAAAAAです。 → 4列目は存在しないのでスルー ・2回目、3行目のABCの内容はBBBBBBBBBBBBBです。 → 4列目が存在するので続けて「AAA」も表示。 next --------------------------------------------------------------------- あまり複雑化せずに、簡単に出来ればうれしいです。

  • ASP.NETからEXCEL起動

    初投稿です。よろしくお願いします。 現在、諸事の事情により、ASP.NETからサーバ上のEXCELのマクロを実行しようとしてますが、起動できずに困っております。 過去ログを探してみて、偽装とDCOMの構成は行いました。 EXCELが実行できるならと思い、ATコマンドでもbatでもたたいてみましたが、 マクロの実行はできませんでした。 諸兄のご助言をお願いしたく思います。 【環境】 OS:WinXP Pro SP2 VisualStadio.Net 2003 Framework1.1 IIS 5.1 MicrosoftOffice 2003 【やりたいこと】 ASP.NETで作成したプログラム上でブラウザのボタンを押したとき、 サーバーのC:\check.xlsを Dim p As Process = Process.Start("EXCEL", "C:\check.xls") で起動し、 書いてあるマクロを実行したい。 【現状】 タスクマネージャで確認したところ、 EXCEL.exe ユーザ名ASPNET は表示されたが マクロは動かなかった。 デバッグで System.Security.Principal.WindowsIdentity.GetCurrent().Name を行ったところ、"マシン名\testuser"となり、 偽装は成功しているよう。 【準備したこと】 1.DCOMの構成のユーザ追加: 管理ツール/コンポーネントサービス/コンポーネントサービス/コンピュータ/マイコンピュータ/DCOMの構成/Microsoft Excel アプリケーションのプロパティ/セキュリティ/ の 「起動とアクティブ化のアクセス許可」のカスタマイズ項目を編集し、testuser とASPNETを追加 「アクセス許可」のカスタマイズ項目を編集し、testuserと ASPNETを追加 2.偽装の有効化: Web.configに <identity impersonate="true" userName="testuser" password="testuser" /> を追加 testuserはAdministrator権限 何とかしたいのですが、方法のご指導をよろしくお願いします。