- ベストアンサー
vbsのショートカット作成で引数に不具合が発生
- vbsのショートカット作成で引数に不具合が発生しています。
- 具体的にはKeePassというアプリケーションで、Database.kdeを開く際にパスワードの引数設定で問題が発生しています。
- ショートカット作成後に実行すると「passを探しています」と表示されますが、ショートカットのプロパティを更新することで正常に動作します。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
'MSDN Libraryには一回、目を通しておこうぜ♪頼むから。 'http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/script56/html/wsMthCreateShortcut.asp '返ってくるのは 'WshShortcut オブジェクト 'または 'WshURLShortcut オブジェクトオブジェクトなので 'これも引いてみる 'http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/script56/html/wsobjwshshortcut.asp 'TargetPathプロパティの説明。 'http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/script56/html/wsprotargetpath.asp '【このプロパティに設定できるのはショートカットのリンク先パスのみです。】 '【ショートカットへの引数は Argument プロパティに設定します。】 '実際にはArgumentではなくArgumentsプロパティのようだが、 'それは先ほどのオブジェクトの説明を見て試行錯誤すればわかるでしょ? Dim WshShell, fso, ShrCut Set WshShell = WScript.CreateObject("WScript.Shell") Set fso = WScript.CreateObject("Scripting.FileSystemObject") 'カレントディレクトリに、ショートカットを作成 Set ShrCut = WshShell.CreateShortcut(WSHShell.CurrentDirectory & "\KeePass.lnk") 'リンク先のパスを記述 ("C:\...\KeePass.exe" "Database.kdb" -pw:"pass") ShrCut.TargetPath = WSHShell.CurrentDirectory & "\KeePass.exe" '【必要性を全く感じない】、と述べた上で 'お好みに応じてもしどうしても引用符でくくりたいなら 'ShrCut.Arguments = """Database.kdb"" -pw:""pass""" 'とでも変更してください。 ShrCut.Arguments = "Database.kdb -pw:pass" '作業フォルダを記述 (カレントディレクトリ) ShrCut.WorkingDirectory = WSHShell.CurrentDirectory 'ショートカットアイコンを指定 '自動的に引用符でくくられるらしい ShrCut.IconLocation = WSHShell.CurrentDirectory & "\KeePass.exe" 'ショートカットを保存 ShrCut.Save
その他の回答 (3)
- himajin100000
- ベストアンサー率54% (1660/3060)
もとい、修正 'ショートカットアイコンを指定 '自動的に引用符でくくられるらしい ではなく 'リンク先のパスを記述 ("C:\...\KeePass.exe" "Database.kdb" -pw:"pass") '自動的に引用符でくくられるらしい ShrCut.TargetPath = WSHShell.CurrentDirectory & "\KeePass.exe" のつもりで書いていた。 なお、ソースコード見てわかるだろうが、Argumentsの方には引用符が自動的には付かないようなので注意
- nicotinism
- ベストアンサー率70% (1019/1452)
= WSHShell.CurrentDirectory & "\KeePass.exe"" ""Database.kdb"" -pw:""pass" ↓ = WSHShell.CurrentDirectory & "\KeePass.exe Database.kdb -pw:pass" passが変数で無いとしたら・・これで動きそうなもんだが? あるいは = Chr(34) & WSHShell.CurrentDirectory & "\KeePass.exe Database.kdb -pw:pass" & Chr(34) とか?
ShrCut.TargetPath = WSHShell.CurrentDirectory & "\KeePass.exe"" ""Database.kdb"" -pw:""pass" ここを ShrCut.TargetPath = WSHShell.CurrentDirectory & "\KeePass.exe ""Database.kdb "" -pw:pass" に変更しましょう。
補足
試してみましたが、動作致しませんでした。 アドバイス、ありがとうございます。 アプリのパスと、Database.kdbと、pass(-pw:passではない)を ""で括りたいのですが、うまくいきませんね。 TargetPath全体を、自動的に""で括っているようですが、 それが関係しているのでしょうか? 考慮はしているのですが
お礼
無事、解決しました。 ご回答、有り難うございました。