Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Datenbank-Server neu starten aus einer C#-Anwendung heraus
riehol
myCSharp.de - Member



Dabei seit:
Beiträge: 3

Themenstarter:

Datenbank-Server neu starten aus einer C#-Anwendung heraus

beantworten | zitieren | melden

verwendetes Datenbanksystem: PostgreSQL

Hallo,

mir stellt sich unter Windows 7 und C# bei der Verwendung von PostgreSQL als Datenbanksystem folgende Problematik.

Ich möchte aus meiner Anwendung heraus das kontinuierliche Archivieren der Datenbank aktivieren / deaktivieren. Dafür muss ich Konfigurationsdateien editieren und dann den Datenbank-Server neu starten.
Das Editieren ist kein Problem, nur das neu starten des Servers scheitert an den Benutzerrechten.
Das neu Starten geht nur von einem Administrator-Account oder dem bei der Installation der Datenbank angelegten Benutzer »postgres« heraus.

Damit eine in der Anzeige existierende Scrollbar weiter funktioniert und nicht stehen bleibt, starte ich aus dem Hauptprogramm einen neuen Thread. In diesem Thread habe ich folgende Wege, leider bislang ohne Erfolg, ausprobiert:

1.)
Ich habe eine Batch-Datei erstellt, in der ich ein Postgres-Tool »pg_ctl.exe« ansprechen wollte. Die Batch-Datei habe ich durch einen Process gestartet und gewartet, bis der Process fertig ist.
2.)
Dann wollte ich mich des ServiceControllers bedienen. Habe mir über den ServiceName den korrekten Service gesucht und versucht ihn mit .Stop() und .Start() neu zu starten. Ich habe auch hier auf den Status gewartet.

Auf beiden Wegen erhielt ich Fehlermeldungen, welche mir besagten, dass ich nicht die Berechtigungen hätte, entweder über die Batch-Datei pg_ctl zu benutzen, oder den Service zu stoppen.

Kann ich irgendwie unter benutzung meines »postgres«-Benutzerkontos und des Passwortes diese Aktionen ausführen? Oder mir für diesen arbeitenden Thread bzw. nur für den erstellten Process Administratorrechte besorgen?

Folgende Dinge habe ich durch googlen bereits versucht.
- http://csharp-tricks.blogspot.de/2011/05/anwendung-mit-administratorrechten-neu.html
- http://www.codeproject.com/Articles/10090/A-small-C-Class-for-impersonating-a-User

Ich bin langsam am verzweifeln.... und hoffe, jemand weiß einen Weg.

Für jede Antwort bin ich sehr dankbar.
Viele Grüße
Riewert
private Nachricht | Beiträge des Benutzers
pdelvo
myCSharp.de - Member

Avatar #avatar-3354.png


Dabei seit:
Beiträge: 1.346

beantworten | zitieren | melden

Du kannst festlegen welcher Benutzer die Rechte hat einen Dienst zu starten und stoppen.
"C:\Program Files (x86)\Windows Resource Kits\Tools\subinacl.exe" /service "Name des Dienstes" /grant=[Account oder Gruppe]

Dann sollte auch der entsprechende Benutzeraccount das dürfen.

LG pdelvo
private Nachricht | Beiträge des Benutzers
Mallett
myCSharp.de - Member



Dabei seit:
Beiträge: 171

beantworten | zitieren | melden

Alternativ kannst Du Dir auch RunAs.exe nehmen und das als Prozess mit pg_ctl.exe als Parameter starten. Damit kannst Du den Benutzer vorgeben, der die als Parameter übergebene Anwendung ausführt.
private Nachricht | Beiträge des Benutzers