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

解決


どら  2005-02-18 20:49:12  No: 56474

どうもです。

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

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

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

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

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


シャノン  2005-02-18 21:56:46  No: 56475

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

いや…
SHGetSpecialFolderPath とか。


シャノン  2005-02-18 22:04:13  No: 56476

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

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


どら  2005-02-18 22:36:29  No: 56477

シャノンさん

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

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


シャノン  2005-02-18 23:09:25  No: 56478

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

GetUserProfileDirectory
SHGetFolderPath
SHGetFolderLocation + SHGetPathFromIDList
SHGetSpecialFolderPath
SHGetSpecialFolderLocation + SHGetPathFromIDList

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


どら  2005-02-19 01:08:38  No: 56479

シャノンさん

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

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


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加