Userimpersonation

09/08/2009 - 12:56 von Peter Schirmer | Report spam
Hallo,

ich kàmpfe unter Windows Vista und höher damit, ein COM-Object auf einem
entfernten Rechner zu erstellen.

Dieses COM-Object làsst sich als Benutzer "Administrator" ausführen und
liefert auch die Ergebnisse die ich möchte. Dazu habe ich mir folgendes
.NET 2005 Beispiel angesehen:

http://www.gssg.de/net_impersonate.htm

Ich rufe die Methode dabei so auf:
'User wechseln
User = New Tools.UserImpersonation
User.ImpersonateUser("administrator", "computer", "passwort")

Allerdings erhalte ich dann vom COM-Object die Meldung, dass der Zugriff
verweigert sei / nicht erstellt werden kann. Ich habe zwei Computer in
der gleichen Arbeitsgruppe mit den gleichen Benutzern und gleichen
Passwörtern. "computer", "passwort" ist dabei die Kennung des PCs auf
dem das Programm ausgeführt wird.

Zum Spaß habe ich mal Sysinternals-Shellrunas probiert, um mein Programm
aufzurufen. Lief tadellos.

Was mache ich falsch? Muss ich noch was bedenken?

Danke und Gruß
Peter
 

Lesen sie die antworten

#1 Peter Götz
10/08/2009 - 10:04 | Warnen spam
Hallo Peter,

ich kàmpfe unter Windows Vista und höher damit,
ein COM-Object auf einem entfernten Rechner zu erstellen.



Wie erstellst Du welches COM-Object (Code)?

Dieses COM-Object làsst sich als Benutzer "Administrator"
ausführen und liefert auch die Ergebnisse die ich möchte.
Dazu habe ich mir folgendes
.NET 2005 Beispiel angesehen:

http://www.gssg.de/net_impersonate.htm



Hast Du das Beispiel in Deiner Rechnerumgebung auch
mal im Original ausprobiert?

Ich rufe die Methode dabei so auf:
'User wechseln
User = New Tools.UserImpersonation
User.ImpersonateUser("administrator", "computer", "passwort")

Allerdings erhalte ich dann vom COM-Object die Meldung,
dass der Zugriff verweigert sei / nicht erstellt werden kann.
Ich habe zwei Computer in der gleichen Arbeitsgruppe



Du hast bei der Angabe von "Domain- or Computername" die
Wahl zwischen einem Domànennamen oder dem "eigenen"
Computernamen, nicht aber einem fremden Computernamen.

mit den gleichen Benutzern und gleichen Passwörtern.
"computer", "passwort" ist dabei die Kennung des PCs auf
dem das Programm ausgeführt wird.

Zum Spaß habe ich mal Sysinternals-Shellrunas probiert,
um mein Programm aufzurufen. Lief tadellos.

Was mache ich falsch? Muss ich noch was bedenken?



Schau Dir mal die Function GetUserToken() im Modul
UserImpersonation.vb an. Darin wird via LogonUser das
TokenHandle (hToken) ermittelt, mit dessen Hilfe spàter
die Impersonation erfolgen soll. Mit LogonUser() kann man
sich aber nur an den eigenen Rechner oder bei der eigenen
Domàne anmelden, nicht aber bei einem entfernten Rechner.

Impersonation wie im Beispiel funktioniert so nur auf dem
eigenen Rechner, bzw. innerhalb einer Domàne, also in
einem von einem Domainserver kontrollierten Netz.

Gruß aus St.Georgen
Peter Götz
www.gssg.de (mit VB-Tipps u. Beispielprogrammen)

Ähnliche fragen