AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

RunAs für Windows 2000

Ein Thema von kuba · begonnen am 15. Jul 2008 · letzter Beitrag vom 15. Jul 2008
Antwort Antwort
Benutzerbild von kuba
kuba

Registriert seit: 26. Mai 2006
Ort: Arnsberg
588 Beiträge
 
Delphi 11 Alexandria
 
#1

RunAs für Windows 2000

  Alt 15. Jul 2008, 22:30
Hy,

funktioniert RunAs(User,Password,Command) unter Windows 2000 ?

Habe folgenden Code gefunden der unter WinXP funktioniert - jedoch nicht unter Win2K :

Delphi-Quellcode:
function CreateProcessWithLogon(lpUsername: PWideChar;
                                lpDomain: PWideChar;
                                lpPassword: PWideChar;
                                dwLogonFlags: DWORD;
                                lpApplicationName: PWideChar;
                                lpCommandLine: PWideChar;
                                dwCreationFlags: DWORD;
                                lpEnvironment: Pointer;
                                lpCurrentDirectory: PWideChar;
                                var lpStartupInfo: TStartupInfo;
                                var lpProcessInfo: TProcessInformation): BOOL; stdcall;
                                external 'advapi32name 'CreateProcessWithLogonW';

function CreateEnvironmentBlock(var lpEnvironment: Pointer;
                                hToken: THandle;
                                bInherit: BOOL): BOOL; stdcall; external 'userenv';

function DestroyEnvironmentBlock(pEnvironment: Pointer): BOOL; stdcall;
external 'userenv';

const
  LOGON_WITH_PROFILE = $00000001;

{------------
Emulate the RunAs function
--------------}


function RunAs(User, Password, Command: String): Integer;
var dwSize: DWORD;
     hToken: THandle;
     lpvEnv: Pointer;
     pi: TProcessInformation;
     si: TStartupInfo;
     szPath: Array [0..MAX_PATH] of WideChar;
begin

  ZeroMemory(@szPath, SizeOf(szPath));
  ZeroMemory(@pi, SizeOf(pi));
  ZeroMemory(@si, SizeOf(si));
  si.cb:=SizeOf(TStartupInfo);

  if LogonUser(PChar(User), nil, PChar(Password), LOGON32_LOGON_INTERACTIVE,
LOGON32_PROVIDER_DEFAULT, hToken) then
  begin
     if CreateEnvironmentBlock(lpvEnv, hToken, True) then
     begin
        dwSize:=SizeOf(szPath) div SizeOf(WCHAR);
        if (GetCurrentDirectoryW(dwSize, @szPath) > 0) then
        begin
           if (CreateProcessWithLogon(PWideChar(WideString(User)), nil,
               PWideChar(WideString(Password)),
               LOGON_WITH_PROFILE, nil, PWideChar(WideString(Command)),
               CREATE_UNICODE_ENVIRONMENT,
               lpvEnv, szPath, si, pi)) then
           begin
              result:=ERROR_SUCCESS;
              CloseHandle(pi.hProcess);
              CloseHandle(pi.hThread);
           end
           else
              result:=GetLastError;
        end
        else
           result:=GetLastError;
        DestroyEnvironmentBlock(lpvEnv);
     end
     else
        result:=GetLastError;
     CloseHandle(hToken);
  end
  else
     result:=GetLastError;
end;
und:

Delphi-Quellcode:
function CreateProcessAsLogon(const User, PW, Application, CmdLine: WideString):
  Boolean;
var
  si : TStartupInfoW;
  pif : TProcessInformation;
begin
  ZeroMemory(@si, sizeof(TStartupInfo));
  si.cb := SizeOf(TStartupInfoW);
  si.dwFlags := STARTF_USESHOWWINDOW;
  si.wShowWindow := 1;
  Result := CreateProcessWithLogonW(PWideChar(User), nil, PWideChar(PW),
    LOGON_WITH_PROFILE, nil, PWideChar(Application +' '+CmdLine),
    CREATE_DEFAULT_ERROR_MODE, nil, nil, si, pif);
end;
Ich benötige RunAs unter Windows 2000

KUBA
Stefan Kubatzki
E=mc2
  Mit Zitat antworten Zitat
Benutzerbild von MagicAndre1981
MagicAndre1981

Registriert seit: 4. Jun 2004
Ort: Nordhausen
2.214 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: RunAs für Windows 2000

  Alt 15. Jul 2008, 22:40
ohne den Code getestet zu haben kann ich sagen dass es RunAs unter Windows 2000 gibt.
André
"A programmer is just a tool which converts caffeine into code", daran wirds wohl liegen, dass ich Abends nie pennen kann

Zitat von Luckie:
Nicht nur dass ihr offtopic geworden seid, jetzt werdet ihr selber im Offtopic noch offtopic
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: RunAs für Windows 2000

  Alt 15. Jul 2008, 22:42
Wenn du uns jetzt noch sagtest, was an der Funktion nicht funktioniert...
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
Benutzerbild von kuba
kuba

Registriert seit: 26. Mai 2006
Ort: Arnsberg
588 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: RunAs für Windows 2000

  Alt 15. Jul 2008, 22:43
Zitat von MagicAndre1981:
ohne den Code getestet zu haben kann ich sagen dass es RunAs unter Windows 2000 gibt.
Ja das weiss ich, o.g. Code funktioniert jedoch nicht unter Windows 2000, vermutlich gibt es unterschiede zu XP. Ich erhalte unter Win2K jedenfalls eine Schutzverletzung in der userenv.dll

KUBA
Stefan Kubatzki
E=mc2
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: RunAs für Windows 2000

  Alt 15. Jul 2008, 22:47
Wo?
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
Benutzerbild von kuba
kuba

Registriert seit: 26. Mai 2006
Ort: Arnsberg
588 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: RunAs für Windows 2000

  Alt 15. Jul 2008, 22:50
Zitat von Apollonius:
Wo?
Im Ereignisprotokoll

kuba
Stefan Kubatzki
E=mc2
  Mit Zitat antworten Zitat
Dezipaitor

Registriert seit: 14. Apr 2003
Ort: Stuttgart
1.701 Beiträge
 
Delphi 7 Professional
 
#7

Re: RunAs für Windows 2000

  Alt 15. Jul 2008, 22:59
Was er meint ist:
Zeige uns die Quelltextstelle, wo es fehlschlägt.

Stichwort: An den Prozess anhängen und debuggen
Christian
Windows, Tokens, Access Control List, Dateisicherheit, Desktop, Vista Elevation?
Goto: JEDI API LIB & Windows Security Code Library (JWSCL)
  Mit Zitat antworten Zitat
Benutzerbild von kuba
kuba

Registriert seit: 26. Mai 2006
Ort: Arnsberg
588 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: RunAs für Windows 2000

  Alt 15. Jul 2008, 23:06
Verstehe...

Hab mein Delphi unter XP am laufen und teste meine Anwendung gerade unter Win2K, da bekomme ich bei beiden Routinen Probleme. Muss den Rechner nochmal starten und im Ereignisprotokoll nachschauen.

Dort steht etwas von: Die Registrierungseinstellungen konnten nicht direkt in das Benutzerprofil gespeichert werden, weil sie durch ein anderes Programm oder einen anderen Dienst bearbeitet wurden. Sie konnten nach 1 Versuchen gespeicher werden.

Am Bildschirm erscheint Die Dynamic Link Library advapi32 (userenv) wurde nicht im angegebenen Pfand ...blablabla... gefunden.

Die DLL´s sind natürlich vorhanden, aber wahrscheinlich passt das bei Win2K irgendwo nicht


Ich erteile meinem angemeldeten User (bei dem mein Programm läuft) per Fernwartung Administratorrechte, das Programm "bemerkt" dass Administratorrechte vorhanden sind und startet per "RunAs" ein weiteres Programm welches Informationen in die Registry schreibt. Vermutlich klappt das bei Win2K nicht und ich muss den angemeldeten Benutzer erst abmelden bevor die Administratorrechte wirksam werden.

kuba
Stefan Kubatzki
E=mc2
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:29 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz