Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Starten einer Anwendung die Admin-Rechte benötigt (Vista) (https://www.delphipraxis.net/82194-starten-einer-anwendung-die-admin-rechte-benoetigt-vista.html)

Bernhard Geyer 8. Dez 2006 13:00


Starten einer Anwendung die Admin-Rechte benötigt (Vista)
 
Hi,

Ich habe eine Anwendung welche ohne Admin-Rechte läuft und mittels CreateProcess eine andere Anwendung startet:
Delphi-Quellcode:
FUNCTION ExecConsole(const sApp, sParams, sTitle: String;
                               wShow: Word): DWord;
var
  aSI    : TStartupInfo;
  aPI    : TProcessInformation;
  aProc  : THandle;
begin
  Result := 1;
  FillChar(aSI, SizeOf(aSI), 0);
  aSI.cb := SizeOf(aSI);
  // Text für die Fensterzeile zuweisen
  aSI.lpTitle := PChar(sTitle);
  aSI.wShowWindow := wShow;
  if not CreateProcess(nil, PChar(sapp+sParams), nil, nil, False,
                       CREATE_NEW_CONSOLE OR NORMAL_PRIORITY_CLASS,
                       nil, nil, aSI, aPI) then
  begin
    Result := 0;
  end;
  aProc := aPI.hProcess;
  CloseHandle(aPI.hThread);
  CloseHandle(aProc);
end;
Diese andere Anwendung benötigt jedoch Administratorrechte und beim direkten Start dieser Anwendung über den Explorer kommt auch dieser beliebte Dialog ("Ein nicht identifiziertes Programm mächte auf den Computer zugreifen ...") unter Vista direkt hoch.

Was müsste ich anpasssen bzw. ergänzen das schon bei meiner ersten Anwendung diese Bestätigung kommt?
Wenn ich über das Kontextmenü des Explorers "Als Administator ausführen" geht es nämlich.

uwewo 8. Dez 2006 13:26

Re: Starten einer Anwendung die Admin-Rechte benötigt (Vist
 
Hallo Bernhard,

ich weiß nicht ob Dir das hilft, aber kannst Du beim starten deines Programms nicht die Adminrechte abfragen und diese Daten, an das externe Programm übergeben. Bzw. es könnte ja unetrdem gleichen Prozess laufen.

Uwe

Luckie 8. Dez 2006 13:28

Re: Starten einer Anwendung die Admin-Rechte benötigt (Vist
 
Starte den zwieten Prozess mit CreateProcesWithLogonW (http://www.michael-puff.de/Developer...thLogonW.shtml) und frag die Logindaten schon beim start des ersten Prozesses ab.

Bernhard Geyer 8. Dez 2006 13:55

Re: Starten einer Anwendung die Admin-Rechte benötigt (Vist
 
Zitat:

Zitat von Luckie
Starte den zwieten Prozess mit CreateProcesWithLogonW (http://www.michael-puff.de/Developer...thLogonW.shtml) und frag die Logindaten schon beim start des ersten Prozesses ab.

Nicht 100%ig das was ich suche. Der User ist ja (lokaler) Admin unter Vista, aber beim Start dieser ersten Anwendung bekommt der Prozess ja nur eingeschränkte Rechte. Ich will nun dieser Anwendung jetzt diese ander Anwendung starten kann ohne das Username + Passwort eingegeben werden muss. Diese Warnmeldung von Windows stört mich auch nicht, sondern nur das ich die anderer Anwendung nicht starten kann. Notfalls würde ich auch u.U. als Trick versuchen unter HKLM einen Schlüssel zu öffnen. Ist halt nicht die "Feine Art"

Bernhard Geyer 8. Dez 2006 14:16

Re: Starten einer Anwendung die Admin-Rechte benötigt (Vist
 
Denkste! :evil:

Man sollte doch nicht unter HKEY_LOCAL_MACHINE schreiben können mit diesen "Nicht-Admin-Rechten". Geht aber und man kann es auch schön wieder auslesen. Öffnet man aber regedit ist der Eintrag aber nicht vorhanden!! :gruebel:

Was für eine "Alles wird einfacher"-Lösung fährt MS hier mal wieder?

Muetze1 8. Dez 2006 14:26

Re: Starten einer Anwendung die Admin-Rechte benötigt (Vist
 
Zitat:

Zitat von Bernhard Geyer
Man sollte doch nicht unter HKEY_LOCAL_MACHINE schreiben können mit diesen "Nicht-Admin-Rechten". Geht aber und man kann es auch schön wieder auslesen. Öffnet man aber regedit ist der Eintrag aber nicht vorhanden!! :gruebel:

Soweit ich das gehört habe, gibt Windows keine Fehlermeldung mehr zurück, schreibt die Daten aber direkt in den HKU Zweig um oder - bei besonderen Keys - in einer gesonderten Abteilung, die dann nur das Programm entsprechend wieder auslesen kann und bearbeiten, welches diese Schlüssel eingestellt hat. Damit will man eine höhere Sicherheit erreichen - auch mit solchen Programmen, welche partout nicht darauf ausgelegt wurden in eingeschränkten Konten zu laufen.

Bernhard Geyer 8. Dez 2006 14:35

Re: Starten einer Anwendung die Admin-Rechte benötigt (Vist
 
Zitat:

Zitat von Muetze1
Zitat:

Zitat von Bernhard Geyer
Man sollte doch nicht unter HKEY_LOCAL_MACHINE schreiben können mit diesen "Nicht-Admin-Rechten". Geht aber und man kann es auch schön wieder auslesen. Öffnet man aber regedit ist der Eintrag aber nicht vorhanden!! :gruebel:

Soweit ich das gehört habe, gibt Windows keine Fehlermeldung mehr zurück, schreibt die Daten aber direkt in den HKU Zweig um oder - bei besonderen Keys - in einer gesonderten Abteilung, die dann nur das Programm entsprechend wieder auslesen kann und bearbeiten, welches diese Schlüssel eingestellt hat. Damit will man eine höhere Sicherheit erreichen - auch mit solchen Programmen, welche partout nicht darauf ausgelegt wurden in eingeschränkten Konten zu laufen.

:evil: Grrrrrr. Wieder so eine genial MS-Idee.

Und wie bekomm ich jetzt hin das Vista den User diesen Dialog unter die Nase reibt bzw. das beim CreateProcess beim neuen Prozess dies abgefragt wird?

Bernhard Geyer 8. Dez 2006 14:38

Re: Starten einer Anwendung die Admin-Rechte benötigt (Vist
 
Zitat:

Zitat von Bernhard Geyer
Zitat:

Zitat von Muetze1
Zitat:

Zitat von Bernhard Geyer
Man sollte doch nicht unter HKEY_LOCAL_MACHINE schreiben können mit diesen "Nicht-Admin-Rechten". Geht aber und man kann es auch schön wieder auslesen. Öffnet man aber regedit ist der Eintrag aber nicht vorhanden!! :gruebel:

Soweit ich das gehört habe, gibt Windows keine Fehlermeldung mehr zurück, schreibt die Daten aber direkt in den HKU Zweig um oder - bei besonderen Keys - in einer gesonderten Abteilung, die dann nur das Programm entsprechend wieder auslesen kann und bearbeiten, welches diese Schlüssel eingestellt hat. Damit will man eine höhere Sicherheit erreichen - auch mit solchen Programmen, welche partout nicht darauf ausgelegt wurden in eingeschränkten Konten zu laufen.

:evil: Grrrrrr. Wieder so eine genial MS-Idee.

Und wie bekomm ich jetzt hin das Vista den User diesen Dialog unter die Nase reibt bzw. das beim CreateProcess beim neuen Prozess dies abgefragt wird?

Gerade entdeckt. Es gibt einen VirtualStore-Zweig indem solche Infos geschrieben werden.

Luckie 8. Dez 2006 14:58

Re: Starten einer Anwendung die Admin-Rechte benötigt (Vist
 
Zitat:

Zitat von Bernhard Geyer
:evil: Grrrrrr. Wieder so eine genial MS-Idee.

Richtig. Wohl der einzig mögliche Kompromiss zwischen der neuen Sicherheit und der Kompatibilität zu alten Programmen. Bitte immer erst mal etwas nachdenken bevor man los meckert. Microsoft wird sich das schon gründlich überlegt haben und ihre Lösung auch begründen können. Microsoft macht selten etwas, um ihre Kunden in dieser Hinsicht zu ärgern.

MagicAndre1981 8. Dez 2006 15:20

Re: Starten einer Anwendung die Admin-Rechte benötigt (Vist
 
du musst in deinem Programm noch eine Manifest-datei einbinden. Unter Vista muss man da noch eintragen mit welchen Rechten das programm laufen soll. In der MSDN findest du alles dazu.

leddl 8. Dez 2006 15:36

Re: Starten einer Anwendung die Admin-Rechte benötigt (Vist
 
Zitat:

Zitat von Luckie
Zitat:

Zitat von Bernhard Geyer
:evil: Grrrrrr. Wieder so eine genial MS-Idee.

Richtig. Wohl der einzig mögliche Kompromiss zwischen der neuen Sicherheit und der Kompatibilität zu alten Programmen. Bitte immer erst mal etwas nachdenken bevor man los meckert. Microsoft wird sich das schon gründlich überlegt haben und ihre Lösung auch begründen können. Microsoft macht selten etwas, um ihre Kunden in dieser Hinsicht zu ärgern.

Rischtisch ;) Ich war gestern erst auf nem Vortrag von Microsoft, bei dem unter anderem etwas über Vista erzählt wurde.
Mit HKEY_LOCAL_MACHINE ist es genauso wie mit dem Programmverzeichnis. Laut Microsoft-Richtlinien sollte da ja kein Programm reinschreiben, der Großteil macht es trotzdem. Mit Vista soll jetzt diese Richtlinie endlich durchgesetzt werden. Damit aber nicht wieder alle Welt jammert, daß MS ja sowieso jede Software außer ihrer eigenen sabotiert, ist es vorerst weiterhin möglich. Solche Dateien bestehen dann als sogenannte "Schattendateien", die eigentlich in einem neuen Ordner im Profilordner abgelegt werden.
Und bevor man das verurteilt, sollte man MS erstmal zugute halten, daß sie es überhaupt noch zulassen. Schließlich wurde lange genug gesagt, daß man doch bitteschön anders programmieren soll :roll:

Zum Thema UAC wurde uns ein interessanter Link gegeben, durch den man zu einem 91-seitigen Dokument kommt, in dem das eigentlich ganz gut erklärt wird. ;)

Bernhard Geyer 9. Dez 2006 19:54

Re: Starten einer Anwendung die Admin-Rechte benötigt (Vist
 
Zitat:

Zitat von Luckie
Zitat:

Zitat von Bernhard Geyer
:evil: Grrrrrr. Wieder so eine genial MS-Idee.

Richtig. Wohl der einzig mögliche Kompromiss zwischen der neuen Sicherheit und der Kompatibilität zu alten Programmen. Bitte immer erst mal etwas nachdenken bevor man los meckert. Microsoft wird sich das schon gründlich überlegt haben und ihre Lösung auch begründen können. Microsoft macht selten etwas, um ihre Kunden in dieser Hinsicht zu ärgern.

Microsoft und nachdenken über neue Sicherheitsfeatures. So wie es bei irgendeinen IE 6-Update auf einmal 2 Optionen gab das aktive Inhalte auf dem lokalen PC bzw. von CD abschaltet wurden (ist ja gefährlich), aber wenn man sie aus dem Internet hohlte es keine Probleme gab. Und wie steht es mit den "Anwendungsdaten-Verzeichnis"? Da hat man auch viel überlegt und mit jeder neuen Windows-Version gibt's eine neue Variante. Mittlerweile geht MS auch dazu über die zu schreibenden Daten unter "Eigene Dateien" abzumüllen. Sie Enterprise-Manager von SQL Server 2005.

Zitat:

Zitat von leddl
Rischtisch ;) Ich war gestern erst auf nem Vortrag von Microsoft, bei dem unter anderem etwas über Vista erzählt wurde. ...
Und bevor man das verurteilt, sollte man MS erstmal zugute halten, daß sie es überhaupt noch zulassen. Schließlich wurde lange genug gesagt, daß man doch bitteschön anders programmieren soll :roll:

HCLM ist für unsere SW normalerweise auch Tabu. Die läuft sogar direkt von CD. Das dumme ist nur das man als Nicht-Weltmarktführer auch noch alte Windows-Versionen unterstützen muss und da sind dann manche Spielregeln genau anders rum.


Zitat:

Zitat von leddl
Zum Thema UAC wurde uns ein interessanter Link gegeben, durch den man zu einem 91-seitigen Dokument kommt, in dem das eigentlich ganz gut erklärt wird. ;)

Die beiden Tools habe ich mir schon heruntergeladen. Aber da ich mich aktuell noch mit einem Implementierungsmangel einer anderen großen SW-Firma beschäftigt bin konnte ich noch nichts testen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:56 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