2013-07-30 7 views
6

Wie kann ich den Domänennamen des Benutzers erhalten, der einen Druck mit der Auftrags-ID des Drucks erstellt?Abrufen des Domänennamens des Benutzers für einen Druckauftrag über die Druckerspooler-API

Ich kann den Namen des Benutzers erhalten, z. B. die JOB_INFO_2 abgerufen über GetJob, aber keine der JOB_INFO_ # Strukturen enthalten den Domain-Namen des Benutzers.

Ich kann die Domäne des Druckservers mit IPGlobalProperties.GetIPGlobalProperties().DomainName abrufen, aber das ist möglicherweise nicht das gleiche wie die Domäne des Benutzers, also ist es keine zuverlässige Lösung.

+1

Stimmt es, dass der Benutzer auf einem Drucker in einer anderen Domäne * drucken kann * ohne * eine gültige Anmeldung für diese Domäne zu geben? Ich weiß es selbst nicht, aber ich frage mich, ob die Domain des Druckerservers gut genug ist. –

+3

Dies wurde ursprünglich als [Bug] (http://support.microsoft.com/kb/156473) in NT 4.0 protokolliert.> PUserName-Mitglied der JOB_INFO_2-Struktur enthält keine Domäneninformationen. – randcd

+0

@randcd - der Link ist nicht an der richtigen Stelle. –

Antwort

1

Ich weiß es nicht sicher, aber es kommt mir vor, dass der Benutzername möglicherweise die Domäne des Benutzers (somelike name @ domain) enthält, und das möglicherweise nur geschieht, wenn der Benutzer auf einem Drucker in einer anderen Domäne druckt . Es könnte sich lohnen, Code zu schreiben und dies zu überprüfen.

+0

Ich weiß, dass die Domain für einen Nutzer in der gleichen Domain nicht enthalten ist, aber es scheint, dass es sich lohnt zu überprüfen, dass das Verhalten für einen Benutzer aus einer anderen Domain gleich ist. –

+0

Ich habe keinen Zugang zu einer Umgebung, in der ich das selbst überprüfen kann. Wenn Sie das überprüfen, teilen Sie bitte die Ergebnisse mit. – Stuart

1

Versuchen Sie, UserPrincipal.FindByIdentity(PrincipalContext, IdentityType, String) zu verwenden, um den Benutzer nach Benutzername zu finden. Sobald der Benutzer gefunden wurde, rufen Sie die Domäne mit der Context-Eigenschaft des UserPrincipals ab.

Sie müssen einen Verweis auf System.DirectoryServices.AccountManagement hinzufügen.

+0

Geben Sie den Arbeitscode ein, der Ihre Idee zeigt und 50 Punkte wert sind. Es gibt eine 24-stündige Schonfrist auf dem Kopfgeld. –

+0

Danke für die Idee. Ich werde es versuchen. –

Verwandte Themen