どうもです。
あるユーザのプロファイルディレクトリのパスを取得しようとするときは
1.LogonUserで、トークンハンドルを取得
2.GetUserProfileDirectoryで、パスを取得
といった手順を踏みますよね?
この時に、1で、ユーザ名・パスワード・ドメインまたはサーバを指定しなければならないですよね?
作成したツールを実行している人のプロファイルディレクトリのパスを取得しようとするときもこれらを必要としてしまいますよね?
そこで
1.現在ログオンしているユーザのトークハンドルを取得する関数
2.現在ログオンしているユーザのプロファイルディレクトリを取得する関数(パスワード等不要)
の関数を検索してみたのですが、それらしき物が見つからなくて・・・
やはり最初に書いた方法で取得するしか方法がないのでしょうか?
どなたかよい方法をご存じの方、教えていただけませんでしょうか?
よろしくお願いします。
> あるユーザのプロファイルディレクトリのパスを取得しようとするときは
> 1.LogonUserで、トークンハンドルを取得
> 2.GetUserProfileDirectoryで、パスを取得
> といった手順を踏みますよね?
いや…
SHGetSpecialFolderPath とか。
> 現在ログオンしているユーザのトークハンドルを取得する関数
現在、呼び出し側アプリを実行しているユーザーの〜なら、
OpenProcessToken( GetCurrentProcess(), ... )
とかでできないでしょうか?
シャノンさん
なるほど・・・
GetCurrentProcessは知らなかったです(^^;
いつもいつも、本当にありがとうございます。
あっさりとできました♪
ちなみに・・・
SHGetSpecialFolderPath を使う方法と、どちらが一般的に使われるんですかね・・・(^^; ?
方法は色々ありますが、OS の制限を受けるものがあります。
GetUserProfileDirectory
SHGetFolderPath
SHGetFolderLocation + SHGetPathFromIDList
SHGetSpecialFolderPath
SHGetSpecialFolderLocation + SHGetPathFromIDList
一番一般的なのは、最後のでしょうか。
Win95 でもできるので(ただし CSIDL_PERSONAL は2k 以降です)。
シャノンさん
なるほど・・・
勉強になります☆
いつもいつもありがとうございます。
結局GetUserProfileDirectoryでやっちゃいました(笑)