![]() |
RunAs Dialog vor dem Programmstart???
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. |
Re: RunAs Dialog vor dem Programmstart???
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 ![]() ![]() |
Re: RunAs Dialog vor dem Programmstart???
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? |
Re: RunAs Dialog vor dem Programmstart???
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 ![]() 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. |
Re: RunAs Dialog vor dem Programmstart???
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 |
Re: RunAs Dialog vor dem Programmstart???
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; |
Re: RunAs Dialog vor dem Programmstart???
Zitat:
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:
"Dateiname.exe" ist natürlich durch den gewünschten Dateinamen des eigenen Programmes zu ersetzen. :stupid:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\Dateiname.exe] "RunAsOnNonAdminInstall"=dword:00000001 "BlockOnTSNonInstallMode"=dword:00000001 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. :oops: |
Re: RunAs Dialog vor dem Programmstart???
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. |
Re: RunAs Dialog vor dem Programmstart???
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. |
Re: RunAs Dialog vor dem Programmstart???
ich würde das ganze einfach über parameter machen.
Delphi-Quellcode:
mein Problem wäre dabei jedoch das ich nicht weiß wie man den Dialog "Ausführen als" per Api öffnet.
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; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:46 Uhr. |
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