現在ログインしているユーザのプロファイルディレクトリを取得する方法について

解決


どら  2005-02-18 11:49:12  No: 56474  IP: 192.*.*.*

どうもです。

あるユーザのプロファイルディレクトリのパスを取得しようとするときは
  1.LogonUserで、トークンハンドルを取得
  2.GetUserProfileDirectoryで、パスを取得
といった手順を踏みますよね?

この時に、1で、ユーザ名・パスワード・ドメインまたはサーバを指定しなければならないですよね?

作成したツールを実行している人のプロファイルディレクトリのパスを取得しようとするときもこれらを必要としてしまいますよね?
そこで
  1.現在ログオンしているユーザのトークハンドルを取得する関数
  2.現在ログオンしているユーザのプロファイルディレクトリを取得する関数(パスワード等不要)
の関数を検索してみたのですが、それらしき物が見つからなくて・・・

やはり最初に書いた方法で取得するしか方法がないのでしょうか?

どなたかよい方法をご存じの方、教えていただけませんでしょうか?
よろしくお願いします。

編集 削除
シャノン  2005-02-18 12:56:46  No: 56475  IP: 192.*.*.*

> あるユーザのプロファイルディレクトリのパスを取得しようとするときは
>   1.LogonUserで、トークンハンドルを取得
>   2.GetUserProfileDirectoryで、パスを取得
> といった手順を踏みますよね?

いや…
SHGetSpecialFolderPath とか。

編集 削除
シャノン  2005-02-18 13:04:13  No: 56476  IP: 192.*.*.*

> 現在ログオンしているユーザのトークハンドルを取得する関数

現在、呼び出し側アプリを実行しているユーザーの〜なら、
OpenProcessToken( GetCurrentProcess(), ... )
とかでできないでしょうか?

編集 削除
どら  2005-02-18 13:36:29  No: 56477  IP: 192.*.*.*

シャノンさん

なるほど・・・
GetCurrentProcessは知らなかったです(^^;
いつもいつも、本当にありがとうございます。
あっさりとできました♪

ちなみに・・・
SHGetSpecialFolderPath を使う方法と、どちらが一般的に使われるんですかね・・・(^^; ?

編集 削除
シャノン  2005-02-18 14:09:25  No: 56478  IP: 192.*.*.*

方法は色々ありますが、OS の制限を受けるものがあります。

GetUserProfileDirectory
SHGetFolderPath
SHGetFolderLocation + SHGetPathFromIDList
SHGetSpecialFolderPath
SHGetSpecialFolderLocation + SHGetPathFromIDList

一番一般的なのは、最後のでしょうか。
Win95 でもできるので(ただし CSIDL_PERSONAL は2k 以降です)。

編集 削除
どら  2005-02-18 16:08:38  No: 56479  IP: 192.*.*.*

シャノンさん

なるほど・・・
勉強になります☆

いつもいつもありがとうございます。
結局GetUserProfileDirectoryでやっちゃいました(笑)

編集 削除