ブログトップ 記事一覧 ログイン 無料ブログ開設

masahirorの気まま記録簿 このページをアンテナに追加 RSSフィード Twitter

2011/12/01(木)

VBSを毎回「管理者として実行」する方法

WindowsVista以降、セットアップや重要なプログラムを実行する際には「管理者として実行」というモードで開く必要があり、これを選択するとUACの確認画面が出るようになった。

仕事でよくVBSのスクリプトを書くのだが、その処理中でレジストリの「HKEY_LOCAL_MACHINE」に書き込みを行ったり、Windowsフォルダにデータを書き込んだりする場合は、いくらユーザにAdmin権限があったとしても、書き込みに失敗してしまう。

そのため、こういう処理を行うプログラムの場合は、一般的に実行プログラムを右クリックして「管理者として実行」を選択すれば良いのだが、VBSの場合、右クリックしてもこのメニューが表示されない。

そのようなVBSを実行させたい場合、とりあえず回避策として

  • BATファイルを作成
  • BATファイルないにVBSの実行パスを記載
  • BATファイルを右クリックして「管理者として実行」を選択

としていたが、これではファイルが余計にできてしまうし、単純なダブルクリックでは「管理者として実行」にならないので面倒くさい。


そこで、これを回避すべく、VBSを普通に開くだけで必ず「管理者として実行」になるよう改良してみた。



ネットで公開されていたソースを元に、使い勝手がいいよう自分なりにアレンジ。

Function runasCheck()
  Dim strScriptPathName

  Dim flgRunasMode
  Dim objWMI, osInfo, flag, objShell, os
  Dim strArgs
  Dim args
  
  Set args = WScript.Arguments

  flgRunasMode = False
  strArgs = ""
  
  ' フラグの取得
  If args.Count > 0 Then
    If UCase(args.item(0)) = "/RUNAS" Then
      flgRunasMode = True
    End If
    strArgs = strArgs & " " & args.item(0)
  End If


  Set objWMI = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\.\root\cimv2")
  Set osInfo = objWMI.ExecQuery("SELECT * FROM Win32_OperatingSystem")
  flag = false
  For Each os in osInfo
    If Left(os.Version, 3) >= 6.0 Then
      flag = True
    End If
  Next

  Set objShell = CreateObject("Shell.Application")
  If flgRunasMode = False Then
    If flag = True Then
      objShell.ShellExecute "wscript.exe", """" & WScript.ScriptFullName & """" & " /RUNAS " & strArgs, _
          "", "runas", 1
      Wscript.Quit
    End If
  End If
End Function

これを呪文のように、単純にコピペでVBSに記載。

そして、管理者として実行したいVBSのソース冒頭に、

Call runasCheck()

と記載するだけで、実行管理者権限で実行しなおしてくれる。


[改訂版] VBScriptポケットリファレンス (POCKET REFERENCE)

[改訂版] VBScriptポケットリファレンス (POCKET REFERENCE)

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/masahiror/20111201/vbs_admin_run
リンク元

過去の日記一覧

このページについて

ホームページ:MN SOFTWARE HOMEPAGE からリンクしてるブログです。
公開しているソフトの開発状況や、作者の日常の出来事・イベント・体験談・考え事などの記録。購入したもののレビューやお気に入りのものの紹介なども。カウンタ→

目的の記事が表示されていない場合は、検索してみてください。
※検索ワードは1単語程度に減らした方がヒットしやすいです。例:「ご飯 炊き方 梅干」→「ご飯」

日記内検索

最新コメント一覧
デル株式会社