2013-07-30 28 views
6

プリントのジョブIDを指定して、プリントを行うユーザのドメイン名を取得するにはどうすればよいですか?プリントスプーラAPIからプリントジョブのユーザのドメイン名を取得する

GetJobで取得したJOB_INFO_2などからユーザーの名前を取得できますが、JOB_INFO_#構造にはユーザーのドメイン名が含まれていません。

IPGlobalProperties.GetIPGlobalProperties().DomainNameを使用してプリントサーバーのドメインを取得できますが、それはユーザーのドメインと同じではない可能性があるため、信頼できる解決策ではありません。

+1

ユーザーは、そのドメインに対して有効なログオンを提供していない*別のドメインのプリンタに印刷できますか?私は自分自身を知らないけど、おそらくプリントサーバーのドメインが十分なのかどうか疑問だ。 –

+3

これはもともとNT 4.0で[バグ](http://support.microsoft.com/kb/156473)として記録されました。> JOB_INFO_2構造のpUserNameメンバーにドメイン情報が含まれていません。 – randcd

+0

@randcd - リンクが適切な場所に移動しません。 –

答えて

1

確かにわかりませんが、ユーザー名にはユーザーのドメイン(somelike name @ domain)が含まれている可能性があります。ユーザーが別のドメインのプリンターに印刷している場合にのみ発生します。いくつかのコードを書いてこれをチェックする価値があるかもしれません。

+0

同じドメイン上のユーザーのドメインは含まれていませんが、別のドメインのユーザーの動作が同じであることを確認する価値があるようです。 –

+0

自分で確認できる環境にアクセスできないので、これをチェックすると結果を共有してください。 – Stuart

1

UserPrincipal.FindByIdentity(PrincipalContext, IdentityType, String)を使用してユーザー名でユーザーを検索してみてください。ユーザーが見つかると、そのUserPrincipalのContextプロパティでドメインを取得します。

System.DirectoryServices.AccountManagementに参照を追加する必要があります。

+0

あなたのアイデアを実証し、50ポイントの価値がある作業コードを投稿してください。賞金には24時間の猶予期間があります。 –

+0

アイデアありがとう。私はこれを試してみましょう。 –

関連する問題