AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Windows Dienst auf entferntem Computer unter Angabe eines Administratorkontos starten

Windows Dienst auf entferntem Computer unter Angabe eines Administratorkontos starten

Ein Thema von LokutusvB · begonnen am 17. Feb 2014 · letzter Beitrag vom 27. Feb 2014
Antwort Antwort
Seite 1 von 2  1 2   
LokutusvB

Registriert seit: 18. Jul 2006
277 Beiträge
 
Delphi XE6 Enterprise
 
#1

Windows Dienst auf entferntem Computer unter Angabe eines Administratorkontos starten

  Alt 17. Feb 2014, 16:06
Hallo,

ich wollte zuerst ein kleines Scrypt schreiben, um einem der Nutzer die Möglichkeit zu geben, auf einem entfernten PC einen Dienst starten und stoppen zu können. Dummerweise braucht er dafür eine Angabe eines Admin-Kontos, was mit PsService.exe auch kein Problem darstellen würde. Nur gibt es bei dem ganzen "Gescripte" oder "Batchen" nicht wirklich die Möglichkeit, das Passwort so zu verstecken, daß es niemand entschlüsseln kann. Deswegen dachte ich mir, schreibe ich fix ein kleines Delphi-Programm.

Ich konnte auch schnell im Netz die nötigen Informationen finden, Stichwort OpenSCManager, dafür gibt es viele Beispiele. Allerdings finde ich nirgends die Möglichkeit, Nutzername und Passwort für die Machine mitzugeben, auf der ein Dienst gestartet oder gestoppt werden soll. Gibt es dafür noch eine andere Funktion oder geht das nur unter Verwendung der CMD?
MFG
LokutusvB
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: Windows Dienst auf entferntem Computer unter Angabe eines Administratorkontos sta

  Alt 17. Feb 2014, 16:19
Das Problem mit dem Admin-Kennwort bleibt (egal ob Skript, Delphi, etc.) wenn du direkt zugreifen willst.

Bei einem indirekten Zugriff benötigst du das Admin-Kennwort nicht.

Schreibe einen Dienst, der auf der Zielmaschine läuft und der von aussen (z.B. per HTTP/HTTPS) angesprochen werden kann.
Diesem Dienst übermittelst du nun den Wunsch (Dienst starten/beenden) und irgendwelche Zugangsdaten, die dieser Dienst dann überprüft. Sind diese Zugangsdaten gültig, dann führt der Dienst den Wunsch aus.
Dieser Kontrolldienst läuft dann schon im entsprechenden Kontext (Administrator) und hat somit keine Probleme andere Dienste zu starten/beenden.

Für jeden Benutzer kann dann auch festgelegt werden, welche Dienste dieser starten/beenden darf.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie
(Moderator)

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#3

AW: Windows Dienst auf entferntem Computer unter Angabe eines Administratorkontos sta

  Alt 17. Feb 2014, 16:27
Du musst dich vorher mit WNetAddConnection2W mit dem Rechner verbinden.
Delphi-Quellcode:
function ConnectToNetworkDriveW(LocalName: WideString; RemoteName: wideString; Username: WideString; Password: WideString;
  RestoreAtLogon: boolean): DWORD;
var
  NetResource : TNetResourceW;
  dwFlags : DWORD;
begin
  dwFlags := 0;
  ZeroMemory(@NetResource, sizeof(TNetResource));
  with NetResource do
  begin
    dwType := RESOURCETYPE_ANY;
    lpLocalName := PWideChar(LocalName);
    lpRemoteName := PwideChar(RemoteName);
    lpProvider := nil;
  end;

  if (RestoreAtLogon) then
    dwFlags := dwFlags or CONNECT_UPDATE_PROFILE;

  Result := WNetAddConnection2W(NetResource, PWideChar(Password), PWideChar(Username), dwFlags);
end;
Ich hoffe, zumindest, dass das die Richtige Funktion war. Habe ich lange nicht mehr gemacht.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#4

AW: Windows Dienst auf entferntem Computer unter Angabe eines Administratorkontos sta

  Alt 17. Feb 2014, 16:56
@Luckie

Wie soll deine Methode das hier realisieren?
das Passwort so zu verstecken, daß es niemand entschlüsseln kann.
Das ist unmöglich, oder nicht benutzbar ... weil auch das Programm es nicht entschlüsseln kann
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
LokutusvB

Registriert seit: 18. Jul 2006
277 Beiträge
 
Delphi XE6 Enterprise
 
#5

AW: Windows Dienst auf entferntem Computer unter Angabe eines Administratorkontos sta

  Alt 19. Feb 2014, 09:06
Vielen Dank für die Antworten, ich werde das mal probieren, beide Varianten. Ja, Sir Rufo, das war von mir vielleicht ein wenig übereifrig ausgedrückt.

Es würde schon völlig ausreichen, wenn es irgendwo verschlüsselt übermittelt wird bzw. im Delphiprogramm selbst steht. An den Quelltext kommt der Anwender ja nicht heran. Wenn ich aber ein Script auf seinem PC ausführe, muß er ja nur den Quelltext des Scriptes anschauen und schon kennt er das Kennwort. Und wenn ich die CMD nutze, muß ja nur die CMD mitlesen. Deswegen denke ich, ist ein Delphi-Programm ein ausreichend guter Weg, die Aufgabe zu realisieren.
MFG
LokutusvB
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

AW: Windows Dienst auf entferntem Computer unter Angabe eines Administratorkontos sta

  Alt 19. Feb 2014, 09:26
Wenn das im Klartext im Delphiprogramm steht, dann lese ich dir das auch ohne Quelltext aus.
Wenn du das verschlüsselt ablegst, dann steht es irgendwann entschlüsselt im Speicher, bzw. die Entschlüsselungsroutine und der Schlüssel zum Entschlüsseln liegt irgendwo -> es ist also quasi verfügbar
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
LokutusvB

Registriert seit: 18. Jul 2006
277 Beiträge
 
Delphi XE6 Enterprise
 
#7

AW: Windows Dienst auf entferntem Computer unter Angabe eines Administratorkontos sta

  Alt 19. Feb 2014, 11:28
Ich gehe davon aus, du verfügst dafür über spezielle Programme. Zumindest kenne ich keinen Weg, mit Standard-Windows-Boardmitteln Informationen aus Exe-Dateien oder aber verschlüsselte Speicherdateien auszulesen. Da dieses Programm erst einmal nur für eine Mitarbeiterin gedacht ist, entscheide ich mich für Luckies Version. Bei deiner Version müßte ich mich erst einarbeiten, da ich so etwas noch nicht gemacht habe.
MFG
LokutusvB
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie
(Moderator)

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#8

AW: Windows Dienst auf entferntem Computer unter Angabe eines Administratorkontos sta

  Alt 19. Feb 2014, 12:45
Einen Hexeditor bekommst du überall. Und der reicht.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.569 Beiträge
 
#9

AW: Windows Dienst auf entferntem Computer unter Angabe eines Administratorkontos sta

  Alt 19. Feb 2014, 12:54
Dummerweise braucht er dafür eine Angabe eines Admin-Kontos,
Wieso?

Gebe doch einfach dem speziellen Nutzer die nötigen Rechte, genau diesen einen Service zu starten/stoppen:
http://social.technet.microsoft.com/...orum=itproxpsp

Dann brauchst Du kein Admin-Passwort zu hinterlegen.
Sebastian P.R. Gingter
不死鳥 Visit my Blog.
Do not argue with an idiot. They lower you to their level and then try to beat you with experience.
  Mit Zitat antworten Zitat
LokutusvB

Registriert seit: 18. Jul 2006
277 Beiträge
 
Delphi XE6 Enterprise
 
#10

[Erledigt] Windows Dienst auf entferntem Computer unter Angabe eines Administrator...

  Alt 27. Feb 2014, 15:44
Das habe ich nun mal probiert, nach der Anleitung von dir und auch anderen Anleitungen aus dem Internet. Aber kein Erfolg. Möchte ich auf dem PC des Mitarbeiters z.B. ein sc \\servername query Dienst ausführen, kommt immer wieder Zugriff verweigert. Ein Neustart des Servers sowie des Nutzer-PCs hat nicht geholfen. Vollzugriff auf den Service mittels mmc hat nicht geholfen. Da der Server, auf dem der Service läuft, virtuell ist und der Benutzer keine Chance auf eine Anmeldung hat, habe ich ihn nun kurzerhand als Administrator im Server aufgenommen und fertig. Nun kann ich auch von seinem PC aus den Dienst starten und stoppen.

Danke trotzdem für die Hilfe!
MFG
LokutusvB
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:16 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf