![]() |
Zugriff verweigert bei OpenService bzw. EnumDependentServices
Hey Leute,
ich bin langsam am Verzweifeln und hoffe auf eure Hilfe :). Ich beschäftige mich gerade mit Windows-Diensten und stehe nun vor einem merkwürdigen Problem: Ich kann ohne Adminrechte auf einem Win7-System den Dienst DcomLaunch nicht öffnen, noch nicht einmal zum Lesen, um dessen Abhängigkeiten mit ![]() Im Folgenden etwas Code. Wichtig: die Unit ServiceManager habe ich von ![]()
Delphi-Quellcode:
Sobald ich als Nutzer auf den Dienst DcomLaunch klicke, bekomme ich die Meldung "Zugriff verweigert". Das Windows Dienste-Applet kann die Eigenschaften des Dienstes aber problemlos ermitteln - auch mit Nutzerrechten. Mit Adminrechten geht es in obigem Testprogramm ebenfalls. Alle anderen Dienste machen ebenfalls keine Probleme.
unit Unit1;
interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ServiceManager, StdCtrls; type TForm1 = class(TForm) ListBox1: TListBox; ListBox2: TListBox; Button1: TButton; procedure Button1Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure ListBox1Click(Sender: TObject); private { Private-Deklarationen } FSvcMan: TServiceManager; public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.DFM} {$R xp.res} procedure TForm1.Button1Click(Sender: TObject); var i: integer; begin ListBox1.Clear; for i:=0 to FSvcMan.ServiceCount-1 do begin listbox1.Items.Add(FSvcMan.Services[i].DisplayName); end; end; procedure TForm1.FormCreate(Sender: TObject); begin FSvcMan:= TServiceManager.Create; FSvcMan.Active:= True; end; procedure TForm1.FormDestroy(Sender: TObject); begin FSvcMan.Active:= False; FSvcMan.Free; end; procedure TForm1.ListBox1Click(Sender: TObject); var i: integer; index: integer; begin index:= ListBox1.ItemIndex; ListBox2.Clear; for i:= 0 to FSvcMan.Services[index].DependentCount-1 do ListBox2.Items.Add(FSvcMan.Services[index].Dependents[i].DisplayName); end; end. Hat jemand eine Idee, was ich falsch mache? Weiß jemand, woran das liegt, und wie ich es lösen kann? Kann es jemand vielleicht sogar nachvollziehen? Ergänzung: Ich habe gerade festgestellt, dass doch noch weitere Dienste betroffen sind:
MfG Dalai |
AW: Zugriff verweigert bei OpenService bzw. EnumDependentServices
Aufgrund der Überflutung mit Antworten ;) vereinfache ich mal die Testsituation.
Delphi-Quellcode:
Kann das bitte mal jemand auf einem Windows 7 einmal als Nutzer und einmal als Admin testen und mir sagen, ob dort mit Nutzerrechten ebenfalls die Meldung "Zugriff verweigert" kommt? Falls ja, kommt beim Dienst TapiSrv ebenfalls eine (sollte nicht)?
unit Unit1;
interface uses Windows, Messages, SysUtils, Classes, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, WinSvc; type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.Button1Click(Sender: TObject); var scm: SC_HANDLE; scs: SC_HANDLE; begin scm:= OpenSCManager('', nil, SC_MANAGER_CONNECT or SC_MANAGER_ENUMERATE_SERVICE); try scs:= 0; try scs:= OpenService(scm, PChar('DcomLaunch'), SERVICE_ENUMERATE_DEPENDENTS); // scs:= OpenService(scm, PChar('TapiSrv'), SERVICE_ENUMERATE_DEPENDENTS); if scs = 0 then RaiseLastWin32Error; except CloseServiceHandle(scs); raise; end; except CloseServiceHandle(scm); raise; end; end; end. MfG Dalai |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:01 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