dポイントプレゼントキャンペーン実施中!

このカテゴリでいいのか迷いましたが、VBScript の CreateShortCut の質問です。

たとえばペイントのショートカットは "%SystemRoot%\System32\mspaint.exe" と設定されていますが、これを次の記述のように、普通に TargetPath を読み出すと "C:\WINDOWS\System32\mspaint.exe" となってしまいます。

MsgBox CreateObject("Wscript.Shell").CreateShortCut( "C:\~~\ペイント.lnk" ).TargetPath

これをショートカットに実際に設定されているとおりに(%SystemRoot% なら %SystemRoot%、C:\WINDOWS なら C:\WINDOWS として)読み出す方法は無いのでしょうか?

よろしくお願いします。

A 回答 (1件)

言おうとしてる事がちょっと理解できません。


疲れてるのかな。。。
CreateShortCut メソッドで作成された ShortCut オブジェクトの TargetPath に設定するリンク先ファイル名のパスの記述方法ですよね?
下記コードの最終行 (A) とその前の行 (B)、2種類の書き方で試しましたが、(A) の場合は 「%SystemRoot%\System32\notepad.exe」 となり、(B) の場合は 「C:\Windows\System32\notepad.exe」 となりましたが?

Dim objShell
Set objShell = CreateObject("WScript.Shell")
Dim desktopPath
desktopPath = objShell.SpecialFolders("Desktop")
Dim lnkPath
lnkPath = desktopPath + "\メモ帳.lnk"

Dim objShortCut
Set objShortCut = objShell.CreateShortcut(lnkPath)
objShortCut.TargetPath = "%SystemRoot%\System32\notepad.exe" ' -- (A)
objShortCut.TargetPath = "C:\Windows\System32\notepad.exe" ' --(B)
    • good
    • 0
この回答へのお礼

説明不足でした。
ショートカットを作成するのではなく、既に存在しているショートカットファイルの設定内容を読み出した時の質問です。

私も Create ShortCut という名称が「へんだな」とは思っていたのですが、質問に書いたコードで既存ファイルの内容を読み出せています。Saveしないで終了すればタイムスタンプも変わりません。
今確認してみたら、マイクロソフトのドキュメントには作成する説明しかありませんでしたが、@ITには(次のページの最後に)読み出しでも使えるとの記述がありました。
http://www.atmarkit.co.jp/fwin2k/tutor/cformwsh1 …
もしかしたらマイクロソフト(CreateShortCut作成者)としては、参照は想定外の使い方なのかも知れません。

既存のショートカットファイルの内容が環境変数で設定されていれば、その環境変数のままの設定値を知る方法は無いでしょうか?
よろしくお願いします。

お礼日時:2012/03/14 04:58

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!