Delphi-PRAXiS
Seite 3 von 5     123 45      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi RunAs Dialog vor dem Programmstart??? (https://www.delphipraxis.net/64813-runas-dialog-vor-dem-programmstart.html)

CodeX 10. Mär 2006 13:13

Re: RunAs Dialog vor dem Programmstart???
 
Zitat:

Zitat von MathiasSimmack
@Codex: Hast du da nicht ein Zitat vergessen:
Zitat:

The SE_TCB_NAME privilege is not required for this function unless you are logging onto a Passport account.

wir schmeissen hier mit zitatfetzen um uns ... ;)
also hier mal vollständig:

Zitat:

Remarks

The LOGON32_LOGON_NETWORK logon type is fastest, but it has the following limitations:

* The function returns an impersonation token, not a primary token. You cannot use this token directly in the CreateProcessAsUser function. However, you can call the DuplicateTokenEx function to convert the token to a primary token, and then use it in CreateProcessAsUser.
* If you convert the token to a primary token and use it in CreateProcessAsUser to start a process, the new process cannot access other network resources, such as remote servers or printers, through the redirector. An exception is that if the network resource is not access controlled, then the new process will be able to access it.

The SE_TCB_NAME privilege is not required for this function unless you are logging onto a Passport account.

Windows 2000: The process calling LogonUser requires the SE_TCB_NAME privilege. If the calling process does not have this privilege, LogonUser fails and GetLastError returns ERROR_PRIVILEGE_NOT_HELD. In some cases, the process that calls LogonUser must also have the SE_CHANGE_NOTIFY_NAME privilege enabled; otherwise, LogonUser fails and GetLastError returns ERROR_ACCESS_DENIED. This privilege is not required for the local system account or accounts that are members of the administrators group. By default, SE_CHANGE_NOTIFY_NAME is enabled for all users, but some administrators may disable it for everyone. For more information about privileges, see Privileges.
ich habe den code jetzt ausprobiert. unter XP funktioniert das einwandfrei.
unter 2000 jedoch nicht. LogonUser liefert hier false zurück. das wird wohl genau der hinweis sein, den ich als zitat gepostet habe.
kann das bitte jemand auch ausprobieren und bestätigen/dementieren? (btw: als DOMAIN habe ich '' genommen, da ich das lokal machen möchte. ging unter XP, vllt braucht 2000 was anderes?)

für meine zwecke müsste eine solche funktion für 2000/XP/2003 funktionieren. die 2000 user möchste/kann ich auf keinen fall ausnehmen.

Luckie 10. Mär 2006 13:16

Re: RunAs Dialog vor dem Programmstart???
 
Warum nimmst du nicht MSDN-Library durchsuchenCreateProcessWithLogonW? das funktioniert sowohl unter Windows 2000 als auch Windows XP. Und du kannst dir auch mal RunAsUser angucken.

Piro 10. Mär 2006 13:31

Re: RunAs Dialog vor dem Programmstart???
 
Habe mit mal CreateProcessWithLogonW angeschaut. würde für meinen Fall auch zu treffen. Funktioniert das auch mit delphi3? Bekomme immer ein fehlermeldung das er EnablePrivilege oder CreateProcessAsLogon nicht kennt.

Luckie 10. Mär 2006 13:36

Re: RunAs Dialog vor dem Programmstart???
 
EnablePrivilege
Und dann brauchst du wahrscheinlich noch die Unit MpuWinNT.pas von meiner Homepage.

CodeX 10. Mär 2006 13:40

Re: RunAs Dialog vor dem Programmstart???
 
Zitat:

Zitat von Luckie
Warum nimmst du nicht MSDN-Library durchsuchenCreateProcessWithLogonW? das funktioniert sowohl unter Windows 2000 als auch Windows XP. Und du kannst dir auch mal RunAsUser angucken.

klar, das geht. nachteil ist hier, dass das nicht im laufenden programm geändert werden kann.
um das in einer exe verwenden zu können, muss sich das programm damit selber aufrufen und die aktuelle instanz beenden.
dürfte den programmstart entsprechend verlangsamen.

Christian Seehase 10. Mär 2006 14:12

Re: RunAs Dialog vor dem Programmstart???
 
Moin Daywalker,

Zitat:

Zitat von daywalker299
Funktioniert das auch mit delphi3? Bekomme immer ein fehlermeldung das er EnablePrivilege oder CreateProcessAsLogon nicht kennt.

Funktionieren wird das mit D3 grundsätzlich schon, nur wirst Du vermutlich die Funktionen selber importieren müssen.

kalmi01 10. Mär 2006 15:38

Re: RunAs Dialog vor dem Programmstart???
 
Zitat:

Zitat von daywalker
Schöner wäre ja nur wenn das ganze Tool mit Admimrechten laufen würde

Tut es ja, wenn Du einen Admin-Account kennst :stupid:
Ansonsten müsste man davon ausgehen müssen, dass Du was "Böses" machen willst. :-D

Zitat:

unter XP funktioniert das einwandfrei.
unter 2000 jedoch nicht.
.....
als DOMAIN habe ich '' genommen
Probiers mal mit der realen Domäne, also Domäne oder Computername.

Zitat:

sicherheitshalber im OnClose noch das RevertToSelf rein
Warum ?
Wenn das Prog schliesst ist alles um !
Kein Prog = keine Rechte !

Zitat:

Zitat von TerronG
Hätt ich dden Code nur eher gekannt ..

Na ja, gekannt hab ich ihn auch nicht.
Ich glaub man nennt das "Erarbeiten" :thumb:

Zitat:

Zitat von CodeX
jetzt lass mich raten: du arbeitest dabei mit services, richtig?

Definitiv NEIN.

CodeX 10. Mär 2006 16:24

Re: RunAs Dialog vor dem Programmstart???
 
Zitat:

Zitat von kalmi01
Zitat:

unter XP funktioniert das einwandfrei.
unter 2000 jedoch nicht.
.....
als DOMAIN habe ich '' genommen
Probiers mal mit der realen Domäne, also Domäne oder Computername.

habe ich nun mit dem computernamen probiert.
XP: geht
2000: geht nicht

kalmi01 10. Mär 2006 16:30

Re: RunAs Dialog vor dem Programmstart???
 
Zitat:

habe ich nun mit dem computernamen probiert.
XP: geht
2000: geht nicht
Tja, dann weiss ich auch nicht weiter.
Wie ich schon sagte, Win2000-PC waren nur (sehr) wenige bei mir im Test, da wir 2K übersprungen haben (schade).
Mit SP2 und allen/letzen Patches gehts bei mir.

Aber vielleicht kriegst Du es ja raus, woran es liegt :wink:

Christian Seehase 10. Mär 2006 20:55

Re: RunAs Dialog vor dem Programmstart???
 
Moin Zusammen,

ich habe das gerade mal ausprobiert beide angesprochenen Privilegien zu aktivieren:
Unter XP SP2 und W2K SP4 hat das geklappt, dennoch schlägt der Aufruf von LogonUser unter W2K fehl (Der Client besitzt ein erforderliches Recht nicht) :gruebel:
Vorhanden sein müssen die Privilegien, sonst könnte ich sie nicht erfolgreich aktivieren.
Irgendwie scheint in der Dokumentation eines (oder mehrere) zu fehlen. :?


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:31 Uhr.
Seite 3 von 5     123 45      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz