AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi RunAs Dialog vor dem Programmstart???
Thema durchsuchen
Ansicht
Themen-Optionen

RunAs Dialog vor dem Programmstart???

Ein Thema von Piro · begonnen am 8. Mär 2006 · letzter Beitrag vom 5. Mai 2006
Antwort Antwort
Seite 1 von 5  1 23     Letzte »    
Benutzerbild von Piro
Piro

Registriert seit: 14. Jul 2003
Ort: Flintbek
810 Beiträge
 
Delphi XE2 Professional
 
#1

RunAs Dialog vor dem Programmstart???

  Alt 8. Mär 2006, 16:28
Moin,

Ich habe ein Programm, welches die Systemprogramme von Windiws als Sammlung enthält. In unserer Firma sollen nun der Helpdesk dieses Programm mit Adminrechten auf dem jeweiligen UserPC benutzen

Dazu würde ich gerne den RUNAS Dialog verwenden.

Frage:
Ist es möglich ein Programm zu entwickeln, dass: 1. RUNAS DIALOG aufruft, 2. das gleiche Programm mit dem RUNAS Benutzer startet? --> Es soll nur ein Programm sein

Vielen Dank im Voraus.
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.117 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: RunAs Dialog vor dem Programmstart???

  Alt 8. Mär 2006, 19:28
Moin Daywalker,

das sollte grundsätzlich gehen.
Du müsstest halt prüfen, ob schon eine Instanz des Programms läuft, ist nicht der Fall startet es das Programm noch einmal (der Pfad ist in paramstr(0)), und beendet sich selber.
Läuft schon eine Instanz, ist beim Start nichts mehr zu tun.
Diese Prüfung sollte dann in der DPR stattfinden.
Einige grundsätzliche Beispiele für das Auffinden laufender Instanzen eines Programmes solltest Du hier mit Hier im Forum suchenCreateMutex bzw. Hier im Forum suchenCreateSemaphore finden können.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von Piro
Piro

Registriert seit: 14. Jul 2003
Ort: Flintbek
810 Beiträge
 
Delphi XE2 Professional
 
#3

Re: RunAs Dialog vor dem Programmstart???

  Alt 8. Mär 2006, 23:41
Ich ahbe jetzt das Forum durchwühlt und bin völlig verwirrt.

Kannst du mir mal kurz theoretisch den Aufruf erklären?

Mein Verständnis.

1. Programm startet und checkt ob es schon existiert - Frage: wie kann ich ein Programm ein 2.Mal starten ohne etwas zu tun?
2. Wenn es existiert - Aufruf des RUNAS Dialoges mit anschließendem erneuten Aufruf des Programmes mit Schließung des 1.Programmes

Richtig? Wenn das so ist, habe ich ein Problem, da ich mich noch nicht damit auseinander gesetzt habe. Kennt da einer gute Tutorials?
  Mit Zitat antworten Zitat
CodeX

Registriert seit: 30. Okt 2004
475 Beiträge
 
Delphi 12 Athens
 
#4

Re: RunAs Dialog vor dem Programmstart???

  Alt 9. Mär 2006, 00:01
falls du auf den runas dialog verzichten kannst und einen eigenen dialog erstellen kannst, dann mach folgendes:

1. beim programmstart die rechte prüfen. falls rechte nicht ausreichend, wird der eigene dialog geöffnet.
2. benutzername und passwort vom dialog verwendest du um CreateProcessAsLogon von Luckie aufzurufen.
3. wenn 0 zurückgeliefert wird, hats geklappt und du beendest die aktuelle instanz, da das programm dann ein zweites mal mit den erweiterten rechten gestartet wurde.
  Mit Zitat antworten Zitat
uwewo

Registriert seit: 14. Jul 2004
Ort: Karlsruhe
479 Beiträge
 
Delphi 2006 Professional
 
#5

Re: RunAs Dialog vor dem Programmstart???

  Alt 9. Mär 2006, 08:07
Hi,

vielleicht verstehe ich etwas nicht aber...

...normalerweise rechte Maustaste auf das Programm und RunAs auswählen(Englische Version)
...versucht man ein Programm zu installieren und man besitzt keine Rechte öffnet sich
der RunAs Dialog automatisch.

Zumindest in unserer Fa.

Server 2003
Workstations WinXP Prof.

Uwe
Uwe
  Mit Zitat antworten Zitat
kalmi01
(Gast)

n/a Beiträge
 
#6

Re: RunAs Dialog vor dem Programmstart???

  Alt 9. Mär 2006, 08:45
Oder Dein Prog macht selbst eine Abfrage á la

Benutzername:
Passwort:

und versucht sich dann die Berechtigungen zu holen:
Delphi-Quellcode:
var
  AdminToken : Cardinal;

if LogonUser(PAnsiChar(USERNAME), // UserName
             PAnsiChar(DOMAIN), // Domäne oder lokaler Rechner
             PAnsiChar(PASSWORD), // Password
             LOGON32_LOGON_BATCH or LOGON32_LOGON_NETWORK or LOGON32_LOGON_INTERACTIVE,
             LOGON32_PROVIDER_DEFAULT,
             AdminToken)
then begin
       if ImpersonateLoggedOnUser(AdminToken)
       then begin
              // hier kommt Dein Prog.-Code hin

              RevertToSelf; // zurückschalten zum angemeldeten Benutzer
            end;
     end;
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#7

Re: RunAs Dialog vor dem Programmstart???

  Alt 9. Mär 2006, 09:04
Zitat von uwewo:
...versucht man ein Programm zu installieren und man besitzt keine Rechte öffnet sich der RunAs Dialog automatisch.
Das liegt daran, weil Windows (XP und höher, bei 2000 weiß ich es nicht) in dem Fall auf die Dateinamen "setup.exe" und "install.exe" reagiert und den Dialog anzeigt. Diesen Trick kann man sich übrigens zunutze machen.
Es reicht nämlich, unter HKLM\Software\Microsoft\Windows\CurrentVersion\App Paths das eigene Programm mit zwei Werten zu registrieren. Ich habe dort die beiden o.g. Dateinamen gefunden, es mit einem eigenen Programm getestet, und es funktioniert wunderbar. Kleine REG-Datei zum Testen:
Code:
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\Dateiname.exe]
"RunAsOnNonAdminInstall"=dword:00000001
"BlockOnTSNonInstallMode"=dword:00000001
"Dateiname.exe" ist natürlich durch den gewünschten Dateinamen des eigenen Programmes zu ersetzen.


PS: Ich denke, der Wert "RunAsOnNonAdminInstall" dürfte ausreichen (= Ausführen als, bei Nicht-Admin-Installation). Der zweite "BlockOnTSNonInstallMode" bezieht sich, wenn ich raten soll, wohl auf Terminal Server. Was er aber genau bedeutet, weiß ich nicht.
  Mit Zitat antworten Zitat
Benutzerbild von Piro
Piro

Registriert seit: 14. Jul 2003
Ort: Flintbek
810 Beiträge
 
Delphi XE2 Professional
 
#8

Re: RunAs Dialog vor dem Programmstart???

  Alt 9. Mär 2006, 17:22
Danke für die zahlreichen Antworten. Wie ich das sehe verzichte ich wohl auf den RUNAS Dialog von Windows, obwohl es gut wäre, denn man bezieht sich gleich auf die vorhanden Users im Active Directory.

@kalmi01:
Dein Programmcode kommt doch in die *.dpr datei oder wie integriere ich dein Codebeispiel?

Gibt es irgendwo ein Tutorial in dem man sieht, wie ein gestartetes Programm sich erneut aufruft und die das zu erst geöffnete Programm schließt?

Danke.
  Mit Zitat antworten Zitat
kalmi01
(Gast)

n/a Beiträge
 
#9

Re: RunAs Dialog vor dem Programmstart???

  Alt 9. Mär 2006, 19:26
Hi,

der Code kommt in Deine Main-Unit (z.B. Unit1.pas).
Der Code ruft Dein Prog nicht noch einmal auf, sonder verleiht dem laufenden Prog die gewünschten Benutzerrechte, so als hättest Du es mit RunAs gestartet.
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#10

Re: RunAs Dialog vor dem Programmstart???

  Alt 9. Mär 2006, 19:46
ich würde das ganze einfach über parameter machen.
Delphi-Quellcode:
var LStartedWithRunAs: Boolean;
    LCount : Integer;
begin
  LStartedWithRunAs := False;
  LCount := 1;
  while (LCount <= ParamCount) and not(LStartedWithRunAs) do
  begin
    LStartedWithRunAs := ParamStr(LCount) = 'StartedWithRunAs';
    inc(LCount);
  end;

  if not(LStartedWithRunAs) then
  begin
    //Starten als Dialog hoch bringen
    [...]
  end;
end;
mein Problem wäre dabei jedoch das ich nicht weiß wie man den Dialog "Ausführen als" per Api öffnet.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 5  1 23     Letzte »    


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 21:44 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