Laden...

SQL-Connection String aus der Registry lesen: Adminrechte nötig

Erstellt von Manuals vor 10 Jahren Letzter Beitrag vor 10 Jahren 855 Views
Hinweis von herbivore vor 10 Jahren

Abgeteilt von Zeitschaltplan: Ermitteln, ob ein Zeitpunkt innerhalb eines Zeitraums liegt

M
Manuals Themenstarter:in
5 Beiträge seit 2013
vor 10 Jahren

Soo hallo leute,
zuerst nochmal danke an alle. Der Quartz.NET Sheduler läuft göttlich und berücksichtigt sogar Feiertage. 👍

Ich hätte leider noch eine Frage. Hab auch schon einige Threads zu dem Thema gelesen jedoch klingt das für mich ziemlich konfus.

Und Zwar möchte ich das mein Dienst den ich hier gerade programmiere sich beim Start den SQL-Connection String aus der Registry liest. Am liebsten würde ich ihn im HKLM platzieren um mit jedem Benutzer den Dienst ausführen zu können. Der Dienst speichert keine Benutzerspezifischen Daten. Er muss nur immer laufen.

Nun braucht man ja auch für den HKLM-Bereich immer Administratorenrechte.

Zur Not könnte der Dienst auch permanent mit einem Administratorkonto ausgeführt werden, was jedoch äußerst suboptimal ist wie ich finde.

Über google bin ich auf folgendes Code-Snippet gestoßen:
Windows Impersonation using C#

Scheint so als könnte man damit die Identität zur Laufzeit ändern.(Falls richtig verstanden)

Oder via Manifest immer als Administrator starten:
C# Code Snippets: Vista UAC elevation

In diesem Fall wird jedoch die Verzeichnisvirtualisierung deaktiviert, was Nachteile in Sachen abwärtskompatibilität haben soll. Die Anwendung MUSS jedoch unter XP lauffähig sein.

Wisst ihr wie ich das hinkriegen kann?

Oder ist das Aufbewahren solcher Informationen in der Registry nicht legitim?

Gruß Manuals

16.827 Beiträge seit 2008
vor 10 Jahren

Da sich von XP auf Vista bzw Win7 in Sachen Security einiges getan hat, wirst Du mit ziemlicher Sicherheit keine Lösung finden, die alle 3 Systeme identisch behandelt.
Oder Du nimmst Abstand von der Registry. Ein Tod musst halt sterben.

Lösung: je nach OS (evtl Command Pattern mit nem Repository o.ä.) eine eigene Klasse, die Dir das Zeug aus oder in die Registry zieht.

S
406 Beiträge seit 2007
vor 10 Jahren

Hallo,

Also ich habe auch schon einige Anwendungen geschrieben, bei denen ich wie du z.B. die DB Infos aus der Registry auslese. Ich muss hier aber auch sagen, das die Dienste entwender unter dem lokalen SystemKonto laufen oder ein Administratoraccount hinterlegt ist.

Evtl. kannst du noch versuchen auf dem Registrypfad die Rechte für "Jeder" zuzulassen. Ist zwar auch nicht optimal aber zum Testen evtl. hilft das weiter. Bzw. den speziellen User in der Registry auf dem Pfad zulassen unter dem dein Dienst ausgeführt wird.

Mfg
SquadWuschel

Mein Blog über .NET und MVC / EF | Meine kostenlose Onlinearbeitszeitverwaltung My:Worktime

F
10.010 Beiträge seit 2004
vor 10 Jahren

Das Ablegen von solchen Infos in der Registry hat unter XP dazu geführt das XP immer langsamer wurde weil jeder Dödel alle Infos dort abgelegt hat.

Weshalb das eigentlich nicht gemacht werden sollte, zumal es viel bessere möglichkeiten gibt, z.b. das Configurationmodel von Dotnet.
Das muss man auch nicht so benutzen wie vorgesehen ( Settings ) sondern kann durchaus per ConfigurationManager.OpenExeConfiguration andere Speicherorte nehmen.

Über ei(ge)ne ProtectSection kann man auch jeden teil der Config verschlüsseln.