すべてのユーザーのデスクトップやスタートメニューへアクセスするにはどうすればいいですか

タグの編集
投稿者 トマト  (小学生) 投稿日時 2009/7/4 22:38:43
いつも質問ばかりですいません。

いろいろとVBを使って簡単なものを作っています。
誰かにあげるわけではないのですが、インストーラでも作ってみようと思いました。

そこで、すべてのユーザーのデスクトップやスタートメニューにアクセスしたいのですが、
フォルダ名(フルパス)を取得するにはどうすればいいのですか?
投稿者 まだまだ  (中学生) 投稿日時 2009/7/5 00:41:25
パブリックのデスクトップにアクセスしてみてはどうでしょうか?
System.Environment.SpecialFolderの方法ではどうやらできないようですけれど、Vistaの場合はC:\Users\Public\Desktopがパブリックのデスクトップフォルダですよ。

余談ですけれどExpressEditionよりも高いエディションなら確かインストーラは簡単作れますよね。
僕もほしいな。
投稿者 トマト  (小学生) 投稿日時 2009/7/5 00:49:37
はい、確かに。とくにProなんか機能充実していて良さそうですよね。

本題に戻ります。
MeとVista以外触ったことがないので、XPや2000は、わかりません。

サンプルや知っていることがあったら、誰か教えてください。
投稿者 るしぇ  (社会人) 投稿日時 2009/7/5 21:40:09
Environment.SpecialFolder.CommonApplicationData で
すべてのユーザーの下のフォルダパスが取れるかテストして、
取れるならパスを加工してみるとか。
投稿者 トマト  (小学生) 投稿日時 2009/7/7 03:11:47
>Environment.SpecialFolder.CommonApplicationData ですべてのユーザーの下のフォルダパスが取れるかテストして、取れるならパスを加工してみるとか。
ちょっと理解がむずかしいです。
でも気になったのでC:\ProgramDataの中を探ってみましたが、フォルダパスが書いてあるファイルは見つかりませんでした。
投稿者 るしぇ  (社会人) 投稿日時 2009/7/7 03:36:03
出てきた単語で知らないものがある場合は、それをキーワードに
WEB検索してみてください。回答者は、ヘルプに書いてある単語・
IT用語辞典に書いてある単語・公式ページで使用されている単語
を使いますので、分からない単語を自分で調べることが可能です。
投稿者 トマト  (小学生) 投稿日時 2009/7/8 03:20:11
>Environment.SpecialFolder.CommonApplicationData ですべてのユーザーの下のフォルダパスが取れるかテストして・・・
これでどうすればいいのですか?
意味がわからないというよりも、Environment.SpecialFolder.CommonApplicationDataは数字になってしまいますよ。
投稿者 トマト  (小学生) 投稿日時 2009/7/8 03:21:37
すいません。もしかして、GetFolderPathの方ですか?
でも、C:\ProgramData になってしまいます。
投稿者 るしぇ  (社会人) 投稿日時 2009/7/8 04:54:04
そこで止まらず、検索結果をもとに更に検索して下さい。
検索結果で『特殊ディレクトリ』と呼ばれていることが分かりますよね。

『Vista 特殊ディレクトリ』の検索で引っかかったサイト。
http://journal.mycom.co.jp/column/winvista/002/index.html
『Vista 特殊ディレクトリ デスクトップ』の検索で引っかかったサイト。
http://pasofaq.jp/windows/mycomputer/folderlist.htm

>でも、C:\ProgramData になってしまいます。
それで正しいみたいですね。

>MeとVista以外触ったことがないので、XPや2000は、わかりません。
Me は XP や 2000 のフォルダ構成と同じだったような気がします。
その対応も考えてるなら、わかりませんではダメなのでは?
投稿者 トマト  (小学生) 投稿日時 2009/7/9 01:39:01
がんばって検索してみました。
Vistaが多いです。

Meを使っていたと書きましたが、ここ2~3年使っていないので忘れてしまいました。
「特殊ディレクトリ XP」や「特殊ディレクトリ XP すべてのユーザー」でも検索してみましたが、Vistaばっかり出てきます。一気に変更されたからでしょうか?

そういえば、探している時に見つけたのですが、Windows 7 ではマイ○○ が復活したみたいですね。
投稿者 魔界の仮面弁士  (社会人) 投稿日時 2009/7/9 03:16:49
とりあえず、手抜きな方法として。

Dim o As Object = CreateObject("WScript.Shell")
MsgBox(o.SpecialFolders("AllUsersDesktop"))
MsgBox(o.SpecialFolders("AllUsersStartMenu"))
System.Runtime.InteropServices.Marshal.ReleaseComObject(o)
投稿者 トマト  (小学生) 投稿日時 2009/7/10 03:36:45
手抜きなのかどうかはわかりませんが、ちゃんとAllUsersDesktopで「C:\Users\Public\Desktop」と表示されました。
WScript.Shellのことが気になるのですが、説明書とかありますか?

あと、MSDNライブラリの全体の最多投稿者という項目に魔界の仮面弁士さんの名前があったのを見つけました。MSDNでも活躍しているとはすごいですね。
投稿者 魔界の仮面弁士  (社会人) 投稿日時 2009/7/10 03:48:59
> 説明書とかありますか?

この辺りかな。

[WshShell オブジェクト]
http://msdn.microsoft.com/ja-jp/library/cc364436.aspx

[SpecialFolders プロパティ]
http://msdn.microsoft.com/ja-jp/library/cc364490.aspx
投稿者 トマト  (小学生) 投稿日時 2009/7/11 02:52:41
ありがとうございました。
MSDNで探すの忘れてました。(というよりあると思わなかった。)

るしぇさん、探し方を教えていただきありがとうございました。

これからもプログラミング、頑張っていきます。もうすぐ夏休みだし・・・