サービスプログラムからSHGetFolderPathの使いから

[戻る]
中谷 2010/11/04(木) 14:47:21
サービスのプログラムを作成しています。
現在ログインユーザのユーザ名で、
SHGetFolderPathを使用して各ディレクトリのパスを取得したいのですが、
方法がいまいちわかりません。第3引数のトークンで引っかかっています。

ログインユーザのトークンの作成方法教えていただけないでしょうか?

aetos 2010/11/04(木) 16:02:44
HandlerEx で SERVICE_CONTROL_SESSIONCHANGE を捕まえて、
WTSSESSION_NOTIFICATION::dwSessionId を WTSQueryUserToken に渡すことで
トークンを得ることができます。

あるいは、リモート等でなく、現在マシンの前にいてログインしているユーザーのセッ
ションであれば、WTSGetActiveConsoleSessionId で取れるでしょう。

サービスは誰もログインしていない時でも動いていることに注意してください。

中谷 2010/11/08(月) 15:56:40
[[解決]]
ありがとうございます。
返信遅れて申し訳ありません。

WTSGetActiveConsoleSessionIdとWTSQueryUserTokenの組み合わせで問題なく
取得できました。ログアウト時や、リモートアクセスなどの問題も少しでてきましたが
、この点をもう少し考えてみたいとおもいます。

古いスレッドには追加発言できません。