none
Windows XP [スタート]メニューにアイコンを追加 の VBS による登録について RRS feed

  • 質問

  • いつもお世話になります。S&S2G の清水徹と申します。


    Windows XP (SP3)ノスタートメニュー(ルナモード)のカスタマイズを VBScript によって行っています。


    例) "E:\DATA\ShortCut" に Calc.exe のショートカットを配置してスタートメニューに登録

    Set objShell = CreateObject("Shell.Application")
    Set objFolder = objShell.Namespace("E:\DATA\ShortCut")
    Set objFolderItem = objFolder.ParseName("計算機.lnk")
    For each itemverb in objFolderItem.verbs
    If itemverb.name = "[スタート] メニューにアイコンを追加(&I)" Then itemverb.DoIt
    Next

    上記スクリプトは、ショートカットを右クリックした際に表示される「[スタート] メニューにアイコンを追加」
    をスクリプト化した物ですが、実行ファイルの拡張子拡張子が BAT や VBS のショートカットを指定した場合、右クリックしても「[スタート] メニューにアイコンを追加」が表示されないため、このスクリプトによる登録が行われません。

    そこで...
    ・「[スタート] メニューにアイコンを追加」が、BAT や VBS ファイルにおいても右クリックで表示される方法
    または
    ・上記スクリプト以外の方法でスタートメニューへの追加や削除が行われる VBS の記述

    についてご教授いただきたくおねがいいたします。

    2009年7月16日 8:14

回答

  • よく読み返して、ようやく事態が飲み込めました。まったく見当違いな返信をしていたようで、大変申し訳ありません。

    Raymond Chen 曰く、スタート メニューのピン リストにはワザとプログラムからはアクセスしづらくしているようですね。

     The Old New Thing : Why is there no programmatic access to the Start menu pin list?
     http://blogs.msdn.com/oldnewthing/archive/2003/09/03/54760.aspx

    Azulean さんがご紹介のレジストリ編集だと、Shift + 右クリックでないとコンテキスト メニューに出てこないので、スクリプトで操作するのは難しいかもしれません。
    別の方法としましては、.BAT や .VBS を .EXE に変換してしまうという方法もあります。(ちょっと無理やりっぽいですが。)

     Renegade's Random Tech: How to Convert a .BAT file or .VBS file into .EXE to Enable Pinning to XP Start Menu
     http://renegadetech.blogspot.com/2006/07/how-to-convert-bat-file-or-vbs-file.html

     VBScriptを実行ファイルに変換する@IExpress - http://pnpk.net
     http://pnpk.net/cms/archives/436
    • 回答としてマーク 元力士 2009年7月23日 5:17
    2009年7月19日 4:03

すべての返信

  • 試したわけではありませんが、CreateShortcut メソッドを使えば実現できそうな気がします。

     CreateShortcut メソッド
     http://msdn.microsoft.com/ja-jp/library/cc364400.aspx

    上記 URL のサンプルコードで、SpecialFolder を変えればよさげな雰囲気が。
    ついでにもうひとつ参考の URL を挙げておきます。

     @IT:運用 Windows管理者のためのWindows Script Host入門 第6回 WshShellオブジェクトの詳細(2) 3.ショートカットの作成 ― CreateShortcutメソッド ―
     http://www.atmarkit.co.jp/fwin2k/operation/wsh06/wsh06_03.html
    2009年7月16日 15:03
  • 返信ありがとうございます。

    作りたいのはショートカットではなく、スタートメニューに項目を追加/削除したいのです。
    ショートカット自体は自動作成しません。
    2009年7月17日 3:29
  • スタート メニューの項目って、その実体はショートカットのはずなのですけど。
    2009年7月17日 3:40
  • ご教授いただいた方法でスタートメニュー(ルナモード)にショートカットを追加/削除をスクリプトでできるということですか??

    すみませんもう少しよく読んでみます。

    2009年7月17日 3:49
  • ルナ モードと断り書きを入れるということは、Quick Launch の方に入れたいということですかね。
    自分が作成したいものと同じ場所にあるアイコンを試しに右クリックしてみると、やるべきことが見えてくると思います。
    2009年7月17日 3:55
  • 右クリックして「[スタート] メニューにアイコンを追加」にが表示されるのは exe ファイルのみで、それ以外の BAT、VBS ファイルでは「[スタート] メニューにアイコンを追加」が表示されないのです。

    もし、BAT、VBS で右クリックして「[スタート] メニューにアイコンを追加」が表示されれば解決なのです。

    2009年7月17日 4:00
  • 右クリックして「[スタート] メニューにアイコンを追加」にが表示されるのは exe ファイルのみで、それ以外の BAT、VBS ファイルでは「[スタート] メニューにアイコンを追加」が表示されないのです。

    もし、BAT、VBS で右クリックして「[スタート] メニューにアイコンを追加」が表示されれば解決なのです。


    これはシェルに機能を追加しないといけないはずですが、その方法を知りたいですか?
    2009年7月17日 4:09
  • ルナ モードと断り書きを入れるということは、Quick Launch の方に入れたいということですかね。
    自分が作成したいものと同じ場所にあるアイコンを試しに右クリックしてみると、やるべきことが見えてくると思います。

    説明が足りないように思いましたので補足しておきます。

    スタート メニューの中にいくつかアイコンが登録されていると思います。(EXE に限らず色んな項目がありますが、ここでは EXE を例にとります。)
    どのアイコンでもいいので、適当なやつを右クリックします。

     自分が作成したいものと同じ場所にあるアイコン

    とは、例えばスタート メニューのアイコンであっても、右クリックして「スタート メニューに表示する」という処理をする前とした後では、ショートカットの作成場所が異なるためです。
    (スタートメニューの項目が横線の上と下とに並んでいます。それぞれでショートカットを作成すべき場所は異なります。)
    右クリックしてプロパティを表示し「全般」タブを選択すると、どこにショートカットを作成するべきかが見えると思います。
    これを参考にして BAT や VBS のショートカットを作成するといいのではないでしょうか。
    2009年7月17日 6:17
  • (スタートメニューの項目が横線の上と下とに並んでいます。それぞれでショートカットを作成すべき場所は異なります。)
    右クリックしてプロパティを表示し「全般」タブを選択すると、どこにショートカットを作成するべきかが見えると思います。
    そうでしょうか?
    Windows XP SP3環境で、F:\のルートフォルダに全く新しくショートカットを作り、それをスタートメニューの線の上の部分(太字で表示されるショートカット)に登録し、そのアイコンを右クリックしてからプロパティを表示し、全般タブを表示しても、元のショートカットと同じ位置(F:\)を指し示しました。
    また、このアイコンの右クリックメニューから名前を変更すると、ドロップ元(F:\)のショートカットも名前が変わりました。

    以上のことから、特定のフォルダにショートカットを作ればOKということではないと推測できます。

    ※この太字で表示される部分は Pin List と呼ぶらしい。
    http://msdn.microsoft.com/en-us/library/aa511447.aspx


    もし、BAT、VBS で右クリックして「[スタート] メニューにアイコンを追加」が表示されれば解決なのです。
    似たような情報としてこういうのもありました。
    レジストリを編集される際は自己責任でお願いします。
    http://windowsxp.mvps.org/pinfolder.htm
    解決した場合は、参考になった返信に「回答としてマーク」のボタンを利用して、回答に設定しましょう(複数に設定できます)。
    2009年7月17日 14:46
    モデレータ
  • よく読み返して、ようやく事態が飲み込めました。まったく見当違いな返信をしていたようで、大変申し訳ありません。

    Raymond Chen 曰く、スタート メニューのピン リストにはワザとプログラムからはアクセスしづらくしているようですね。

     The Old New Thing : Why is there no programmatic access to the Start menu pin list?
     http://blogs.msdn.com/oldnewthing/archive/2003/09/03/54760.aspx

    Azulean さんがご紹介のレジストリ編集だと、Shift + 右クリックでないとコンテキスト メニューに出てこないので、スクリプトで操作するのは難しいかもしれません。
    別の方法としましては、.BAT や .VBS を .EXE に変換してしまうという方法もあります。(ちょっと無理やりっぽいですが。)

     Renegade's Random Tech: How to Convert a .BAT file or .VBS file into .EXE to Enable Pinning to XP Start Menu
     http://renegadetech.blogspot.com/2006/07/how-to-convert-bat-file-or-vbs-file.html

     VBScriptを実行ファイルに変換する@IExpress - http://pnpk.net
     http://pnpk.net/cms/archives/436
    • 回答としてマーク 元力士 2009年7月23日 5:17
    2009年7月19日 4:03
  • あーなるほど。
    Windows 2000まではプログラムが勝手に登録するためにスタートメニュー(プログラムメニュー)が氾濫しすぎて、逆にメニューを辿りにくくなっていましたね。
    そのためにWindows XPではプログラムメニューの1階層上にリストを用意し、使用頻度に応じた項目と件のpin list(プログラマではなく、ユーザーが明示的に選択したリスト)になっているんですね。

    だとすると、プログラムから自動登録しようとしている元力士さんの行為そのものが誤りですね。
    2009年7月19日 23:39
  • 返信遅れましたが、totojo さんにご紹介いただきました IExpress により BAT、VBS ファイルをEXE 形式に変換することによって自動でスタートメニューのカスタマイズが可能になりました。

    ありがとうございます。


    他に回答を下さった方もありがとうございました。
    2009年7月23日 5:29