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
EnumDependentServices ermitteln zu können.
Im Folgenden etwas Code. Wichtig: die
Unit ServiceManager habe ich von
dieser Seite bei Stackoverflow.
Delphi-Quellcode:
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.
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.
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:
- pla (Leistungsprotokolle und -Warnungen)
- RpcEptMapper (RPC-Endpunktzuordnung)
- RpcSs (Remoteprozeduraufruf (RPC))
Alle anderen lassen sich aber öffnen.
MfG Dalai