3流プログラマのメモ書き

元開発職→社内SE→派遣で営業支援の三流プログラマのIT技術メモ書き。 このメモが忘れっぽい自分とググってきた技術者の役に立ってくれれば幸いです。(jehupc.exblog.jpから移転中)

(WSH)ユーザの特殊フォルダに共有フォルダへのショートカットを作成する

今回したかったのは、ユーザのデスクトップやお気に入りに共有フォルダへのリンク(ショートカット)を作成するということです。

当初 Windows Server 2003 のグループポリシーでIEM(Internet Explorer メンテナンス)を使ってお気に入りに file://fileserver/foldername/%username% という書式で追加しようと思ったんですが、ダメでした。

(%usernmae% があるのは、個人毎に共有フォルダを持つような運用にしたかったからです。)

(また、Windows Server 2008 以降のドメインコントローラならグループポリシーがかなり拡張できてるため、グループポリシー内で設定できるようですね。)

結局、ログインスクリプトを使って共有フォルダへのショートカットを作成することにしました。

ショートカットの作成は Shell.CreateShortcut でできるようです。

また、特殊フォルダのパスの取得は Shell.SpecialFolders(特殊フォルダ) とすると取得できるようです。

とりあえず下記のようにしてみました。(VBScript)

Option Explicit

 

Dim objSh,scDesktop,scFavorites,scNetHood,strTrget

 

'共有フォルダ内の個人フォルダのパス

strTrget = "\\fileserver\user\%username%"

 

Set objSh=CreateObject("WScript.Shell")

 

'共有フォルダ内の個人フォルダへのショートカットを作成(デスクトップ)

Set scDesktop = objSh.CreateShortcut(objSh.SpecialFolders("Desktop") & "\個人フォルダ.lnk")

scDesktop.TargetPath = strTrget

scDesktop.save

 

'共有フォルダ内の個人フォルダへのショートカットを作成(お気に入り)

Set scFavorites = objSh.CreateShortcut(objSh.SpecialFolders("Favorites") & "\個人フォルダ.lnk")

scFavorites.TargetPath = strTrget

scFavorites.save

 

'共有フォルダ内の人フォルダへのショートカットを作成(マイネットワーク)

Set scNetHood = objSh.CreateShortcut(objSh.SpecialFolders("NetHood") & "\個人フォルダ.lnk")

scNetHood.TargetPath = strTrget

scNetHood.save

なお、Shell.SpecialFolders の引数となる特殊フォルダの文字列には下記のように指定するようです。

┌─────────┬──────────────────────────┐

│AllUsersDesktop │デスクトップ(共通) │

├─────────┼──────────────────────────┤

│AllUsersStartMenu │スタートメニュー(共通) │

├─────────┼──────────────────────────┤

│AllUsersPrograms │スタートメニュー内の「プログラム」フォルダ(共通) │

├─────────┼──────────────────────────┤

│AllUsersStartUp │スタートメニュー内の「スタートアップ」フォルダ(共通)│

├─────────┼──────────────────────────┤

│Desktop │デスクトップ │

├─────────┼──────────────────────────┤

│Favorites │お気に入り │

├─────────┼──────────────────────────┤

│Fonts │フォント │

├─────────┼──────────────────────────┤

│MyDocuments │マイドキュメント │

├─────────┼──────────────────────────┤

│NetHood │マイネットワーク │

├─────────┼──────────────────────────┤

│PrintHood │プリンタ │

├─────────┼──────────────────────────┤

│Programs │スタートメニュー内の「プログラム」フォルダ │

├─────────┼──────────────────────────┤

│Recent │最近使ったファイル │

├─────────┼──────────────────────────┤

│SendTo │送るメニュー │

├─────────┼──────────────────────────┤

│StartMenu │スタートメニュー │

├─────────┼──────────────────────────┤

│Startup │スタートメニュー内の「スタートアップ」フォルダ │

├─────────┼──────────────────────────┤

│Templates │テンプレート │

├─────────┼──────────────────────────┤

│0 │WINDOWSディレクトリ │

├─────────┼──────────────────────────┤

│1 │システムディレクトリ │

├─────────┼──────────────────────────┤

│2 │テンポラリディレクトリ │

└─────────┴──────────────────────────┘

参考:

ショートカットを作成する|VBScript Tips

@IT:Windows TIPS -- Tips:デスクトップ上に必要なショートカットを自動生成する

特殊フォルダのパスを取得する@VBS - http://pnpk.net

強化されたグループ・ポリシー機能 - @IT 2008 だとグループポリシーで設定可能です。