Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Ich werde wahnsinnig !! Registry und TaskMGr (https://www.delphipraxis.net/24965-ich-werde-wahnsinnig-registry-und-taskmgr.html)

CReber 29. Jun 2004 09:27


Ich werde wahnsinnig !! Registry und TaskMGr
 
Ich habe folgendes *extrem nervendes* Problem. Ich hab ne DLL geschrieben in der folgende procedure drin ist:

Delphi-Quellcode:
procedure EnableCTRLALTDEL(YesNo : boolean);
const
sRegPolicies = '\Software\Microsoft\Windows\CurrentVersion\Policies';
begin
  with TRegistry.Create do
  try
    RootKey:=HKEY_CURRENT_USER;
    if OpenKey(sRegPolicies+'\System\',True) then
    begin
      case YesNo of
        False:
          begin
            WriteInteger('DisableTaskMgr',1);
          end;
        True:
          begin
            WriteInteger('DisableTaskMgr',0);
          end;
      end;
    end;
    CloseKey;
    if OpenKey(sRegPolicies+'\Explorer\',True) then
    begin
      case YesNo of
        False:
          begin
            WriteInteger('NoChangeStartMenu',1);
            WriteInteger('NoClose',1);
            WriteInteger('NoLogOff',1);
          end;
        True:
          begin
            WriteInteger('NoChangeStartMenu',0);
            WriteInteger('NoClose',0);
            WriteInteger('NoLogOff',0);
          end;
      end;
    end;
    CloseKey;
  finally
    Free;
  end;
end;
Nun habe ich eine Anwendung die diese folgendermassen deklariert:

procedure EnableCTRLALTDEL(YesNo : boolean); external 'denied.dll'
function DisableTaskKeys(bDisable: bool): bool; stdcall; external 'denied.dll'

Das ist eine Art Sperrbildschirm daher die Funktion. Also wird die Exe aufgerufen und es funzt einfach nicht ! Ich bin mir ganz sicher das ich nichts falsch gemacht habe, denn in einer normalen Exe funktioniert es auch. Das einzige was bei meiner anders ist, ist das sie von einem Dienst aufgerufen wird. Die function DisableTaskKeys funktioniert wunderbar. (bitte sag jetzt keiner es liegt an stdcall denn daran liegt es nicht)


Kann es sein das es irgendwie an was anderes (Windows Internes) liegt was ich einfach nur nicht weiß???

CReber 29. Jun 2004 09:49

Re: Ich werde wahnsinnig !! Registry und TaskMGr
 
Also das hat auf jeden Fall mit dem Dienst zu tun ! Ich nehme an, das Programm weiß nicht welcher User der CURRENT_USER ist weil es vom Dienst gestartet wird ?! Hat jemand ne Idee wie ich das umgehen kann?

sakura 29. Jun 2004 09:54

Re: Ich werde wahnsinnig !! Registry und TaskMGr
 
Zitat:

Zitat von hOnkibOnk
Also das hat auf jeden Fall mit dem Dienst zu tun ! Ich nehme an, das Programm weiß nicht welcher User der CURRENT_USER ist weil es vom Dienst gestartet wird ?!

Der Dienst wird per Standard immer unter dem SYSTEM-Account gestartet. Das lässt sich durch den Dienste-Manager ändern. Allerdings wird der Dienst nicht ermitteln können, wer den Dienst gestartet hat.

PATT-Situation, falscher Ansatz ;)

...:cat:...

CReber 29. Jun 2004 10:08

Re: Ich werde wahnsinnig !! Registry und TaskMGr
 
Also der Dienst läuft unter SYSTEM und das Programm das der Dienst startet läuft demnach auch unter SYSTEM. Und nun soll ich es ändern, indem ich beim Dienst einstelle das es nicht unter SYSTEM sondern unter CURRENT_USER starten soll?

Wie? :)))

StartType

Beschreibung

StartType legt fest, wie und aus welchen Gründen der Dienst gestartet wird.

Möglichkeiten: stAuto, stBoot, stDisabled, stSystem, stManuel -> Ist momentan auf Auto

ServiceType

Beschreibung

Die Eigenschaft ServiceType gibt den Typ des Dienstes an. ServiceType kann folgende Werte annehmen: stWin32 (der Standardwert, ein Win32-Dienst), stDevice (ein Gerätetreiber) oder stFileSystem (ein Dateisystemtreiber

-> Ist momentan auf stWin32

Interactive

Beschreibung

Interactive legt fest, ob der Dienst mit dem Windows-Desktop interagieren kann. Diese Eigenschaft wirkt sich nur dann aus, wenn ServiceType den Wert stWin32 hat. Weitere Informationen über die Erstellung von interaktiven NT-Diensten finden Sie in der Microsoft-Hilfe.

-> Ist momentan auf False (war schon auf True aber das hat auch nichts gebracht)


Ich muss dem Dienst ja einfach sagen das er das er die SperrBildschirm.exe unter Current_user starten soll. Da bin ich aber atm überfragt ;)


Zitat:

Allerdings wird der Dienst nicht ermitteln können, wer den Dienst gestartet hat.
Das soll auch die gestartete Exe rausfinden und nicht der Dienst! Nur die läuft ja demnach auch unter'm SYSTEM Account.

sakura 29. Jun 2004 10:16

Re: Ich werde wahnsinnig !! Registry und TaskMGr
 
Zitat:

Zitat von hOnkibOnk
Und nun soll ich es ändern, indem ich beim Dienst einstelle das es nicht unter SYSTEM sondern unter CURRENT_USER starten soll?

Das geht nicht ;)

Zitat:

Zitat von hOnkibOnk
Ich muss dem Dienst ja einfach sagen das er das er die SperrBildschirm.exe unter Current_user starten soll. Da bin ich aber atm überfragt ;)

Du kannst den CurrentUser nicht herausbekommen, da an einer NT-Machine (dank Terminal-Services, RPC, ...) mehrere User angemeldet sein können.

Zitat:

Zitat von hOnkibOnk
Das soll auch die gestartete Exe rausfinden und nicht der Dienst! Nur die läuft ja demnach auch unter'm SYSTEM Account.

Die EXE startet unter dem Account des Aufrufenden - also in diesem Fall SYSTEM vom Dienst. Der kann die EXE zwar unter einem anderen Konto starten, allerdings musst Du beim Start den NT-Account und das zugehörige Passwort angeben.

Auf die Gefahr hin, daß ich mich wiederhole:
Siehe oben
PATT-Situation, falscher Ansatz ;)


...:cat:...

CReber 29. Jun 2004 10:21

Re: Ich werde wahnsinnig !! Registry und TaskMGr
 
Soll heißen ich muss das ohne Dienst machen, weil es keine Ausweichmöglichkeit gibt?

sakura 29. Jun 2004 10:24

Re: Ich werde wahnsinnig !! Registry und TaskMGr
 
Zitat:

Zitat von hOnkibOnk
Soll heißen ich muss das ohne Dienst machen, weil es keine Ausweichmöglichkeit gibt?

Soll zumindest heißen, daß Dein Dienst nicht zuverlässig kontrollieren kann, wer diesen gestartet hat und damit auch die Exe nicht unter dessen Account starten kann (wäre ja auch schlimm :roll: )

Kurz: Eine andere Lösung muss her ;)

...:cat:...

pilif 29. Jun 2004 12:51

Re: Ich werde wahnsinnig !! Registry und TaskMGr
 
Hallöchen,

du kannst den Dienst als einer gesetzten User-ID setzen. Im Dienst-Controlpanel rechte MT auf den Dienst, Eigenschaften und im Logon-Tab den User angeben.

Philip

Schnaddel 29. Jun 2004 13:00

Re: Ich werde wahnsinnig !! Registry und TaskMGr
 
Zitat:

Zitat von hOnkibOnk
Ich habe folgendes *extrem nervendes* Problem. Ich hab ne DLL geschrieben in der folgende procedure drin ist:

Delphi-Quellcode:
procedure EnableCTRLALTDEL(YesNo : boolean);
const
sRegPolicies = '\Software\Microsoft\Windows\CurrentVersion\Policies';
begin
  with TRegistry.Create do
  try
    RootKey:=HKEY_CURRENT_USER;
    if OpenKey(sRegPolicies+'\System\',True) then
    begin
      case YesNo of
        False:
          begin
            WriteInteger('DisableTaskMgr',1);
          end;
        True:
          begin
            WriteInteger('DisableTaskMgr',0);
          end;
      end;
    end;
    CloseKey;
    if OpenKey(sRegPolicies+'\Explorer\',True) then
    begin
      case YesNo of
        False:
          begin
            WriteInteger('NoChangeStartMenu',1);
            WriteInteger('NoClose',1);
            WriteInteger('NoLogOff',1);
          end;
        True:
          begin
            WriteInteger('NoChangeStartMenu',0);
            WriteInteger('NoClose',0);
            WriteInteger('NoLogOff',0);
          end;
      end;
    end;
    CloseKey;
  finally
    Free;
  end;
end;
Nun habe ich eine Anwendung die diese folgendermassen deklariert:

procedure EnableCTRLALTDEL(YesNo : boolean); external 'denied.dll'
function DisableTaskKeys(bDisable: bool): bool; stdcall; external 'denied.dll'

Das ist eine Art Sperrbildschirm daher die Funktion. Also wird die Exe aufgerufen und es funzt einfach nicht ! Ich bin mir ganz sicher das ich nichts falsch gemacht habe, denn in einer normalen Exe funktioniert es auch. Das einzige was bei meiner anders ist, ist das sie von einem Dienst aufgerufen wird. Die function DisableTaskKeys funktioniert wunderbar. (bitte sag jetzt keiner es liegt an stdcall denn daran liegt es nicht)


Kann es sein das es irgendwie an was anderes (Windows Internes) liegt was ich einfach nur nicht weiß???


sakura 29. Jun 2004 13:03

Re: Ich werde wahnsinnig !! Registry und TaskMGr
 
Zitat:

Zitat von pilif
du kannst den Dienst als einer gesetzten User-ID setzen. Im Dienst-Controlpanel rechte MT auf den Dienst, Eigenschaften und im Logon-Tab den User angeben.

Und, damit hat er sein Ziel den aktuellen Nutzer zu ermitteln auch nicht erreicht ;)

@Schnaddel: Du wolltest sagen :gruebel:

...:cat:...


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:51 Uhr.
Seite 1 von 2  1 2      

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