WinFuture-Forum.de: [.Net] in anderen Benutzerkontext wechseln - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

[.Net] in anderen Benutzerkontext wechseln um in registry schreiben zu drürfen


#1 Mitglied ist offline   m4rkus 

  • Gruppe: aktive Mitglieder
  • Beiträge: 316
  • Beigetreten: 28. Juni 06
  • Reputation: 0

  geschrieben 13. Mai 2011 - 10:04

Hallo zusammen,

schon ein weilchen her, dass ich hier im Forum unterwegs war, ich hoffe aber Ihr könnt mich trotzdem wie gewohnt unterstützen :imao:

Folgendes Problem:
Ein Benutzer (ohne Adminrechte) muss Werte in der Registry änder. Hierfür braucht man ja natürlich normalerweise Adminrechte.

Ich suche jetzt nach ner Möglichkeit mein Programm in einem anderen Benutzerkontext laufen zu lassen, sodass während der Benutzer angemeldet ist bestimte Registry-Einträge geändert werden können.
Der angemeldete Benutzer soll hiervon nichts mitkriegen (keine Dialogbox mit Anmeldeinformtionen, da er das Adminkennwort natürlich eh nicht kennt)

Den jeweiligen Benutzer zum Administrator zu erheben möchte ich natürlich auch nicht, da er ja sonst kompletten Zugriff auf seinen PC hätte. Er soll lediglich das Programm starten können, welches dann für Ihn automatisch die Registry ändert.

Entwicklungsumgebung ist .Net, wahrscheinlich C#.

Ich hab natürlich selber auch schon ein bisschen überlegt. Das einzige was meiner Meinung nach diese Funktionalität bereitstellt (Programm, das standardmäßig unter anderem Benutzerkontext ausgeführt wird) wäre ein Windows-Service, also ein Dienst.

Was meint Ihr? Gibt es bessere Möglichkeiten? Sollte das Ganze mit einem Dienst zu bewerkstelligen sein? User klickt auf Verknüpfung, Dienst ändert Registry.
Wie läuft das ganze dann ab? Wie kann ich Funktionen von einem Dienst aufrufen?

Hoffe Ihr könnt mich hier ein bisschen unterstüzen, bin gerade erst dabei mich in die .Net-Geschichte einzulesen, komme eher aus der Java-Ecke.

Grüße,
m4rkus
2*3=4
0

Anzeige



#2 Mitglied ist offline   tobias86 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.690
  • Beigetreten: 14. August 06
  • Reputation: 6
  • Geschlecht:Männlich
  • Wohnort:localhost

geschrieben 13. Mai 2011 - 12:50

Hi,

ich glaube nicht, dass du das so hinbekommen wirst, weil du sonst jedes Sicherheitsfeature von Windows aushebeln würdest.

Wenn dann müsstest du eine Art "Abfrage(UAC?)" starten, das sich der User nun als Admin authentifizieren muss.

Sonst klappt es meiner Meinung nach nicht.
0

#3 Mitglied ist offline   m4rkus 

  • Gruppe: aktive Mitglieder
  • Beiträge: 316
  • Beigetreten: 28. Juni 06
  • Reputation: 0

geschrieben 13. Mai 2011 - 13:26

Ein Dienst läuft aber normalerweise immer unterm Systemkonto, oder ähnlichem. Wenn ich jetzt dem als Benutzer sage: "bitte führe die änderungen an der Registry durch", dann müsste das ganze schon klappen.

Dass der Dienst dann als Administrator installiert werden muss ist klar, aber ab dann müsste er dann einfach laufen und kann befehle empfangen.

Korrigiert mich falls ich falsch liege :(

folgendes hab ich noch rausgefunden:

einen Dienst kann die methode OnCustomCommand(int command) implementieren, über die er Kommandos von außerhalb empfangen kann.
-->> Die Frage ist jetzt gerade wie ich dem Dienst so ein CustomCommand erteile. Hab da jetzt nix zu gefunden.

Hier ist doch bestimmt jemand unterwegs, der shcon mal nen Dienst programmiert hat, oder? ^_^

lg

Dieser Beitrag wurde von m4rkus bearbeitet: 13. Mai 2011 - 13:29

2*3=4
0

#4 Mitglied ist offline   Andi_84 

  • Gruppe: aktive Mitglieder
  • Beiträge: 401
  • Beigetreten: 30. November 08
  • Reputation: 1
  • Geschlecht:Männlich
  • Wohnort:Bayern

geschrieben 13. Mai 2011 - 20:13

Beitrag anzeigenZitat (m4rkus: 13.05.2011, 11:04)

...
Folgendes Problem:
Ein Benutzer (ohne Adminrechte) muss Werte in der Registry änder. Hierfür braucht man ja natürlich normalerweise Adminrechte.
...

Werte unterhalb des eigenen Benutzerzweiges (also unterhalb von HKEY_CURRENT_USER) sollten auch ohne Admin-Rechte durch das Programm änderbar sein.

Werte unterhalb von HKEY_LOCAL_MACHINE, HKEY_CLASSES_ROOT oder HKEY_CURRENT_CONFIG hingegen sind nur mit Admin-Rechten schreibbar.

Viele Grüße,
Анди
Laptop: HP EliteBook 8560p; Core i7-2720QM, 16 GB DDR3 1333, 500 GB HDD, Intel HD Graphics 3000, Win 7 x64 SP1 Build 7601.17514
Internetzugang: T-Home VDSL 50 @ 51392 kbit/s down, 10048 kbit/s up || Router: FritzBox 7360 @ FW 111.05.24
0

#5 Mitglied ist offline   m4rkus 

  • Gruppe: aktive Mitglieder
  • Beiträge: 316
  • Beigetreten: 28. Juni 06
  • Reputation: 0

geschrieben 21. Mai 2011 - 07:22

Hey hey,

also der key den ich schreiben moechte ist nicht unter HKEY_CURRENT_USER, somit brauch ich schon admin-rechte um den zu schreiben.

Speziell die berechtigungen auf den Key, den ich schreiben moechte, zu veraendern scheidet scheinbar auch aus, da man in Win7 ohne admin-rechte beim aufruf von

Microsoft.Win32.Registry.LocalMachine....


immer in

HKEY_USERS\S-1-5-2.....77-1001\Software\Classes\VirtualStore\MACHINE\SOFTWARE
landet.

Bleibt also fast nur noch der Weg ueber den dienst, bei dem ich hoffe dass das ganze so klappt wie ich mir das vorstelle. :lol:

Bin trotzdem noch fuer alle vorschlaege offen :)

gruss

Dieser Beitrag wurde von m4rkus bearbeitet: 21. Mai 2011 - 07:27

2*3=4
0

#6 Mitglied ist offline   UweKeim 

  • Gruppe: aktive Mitglieder
  • Beiträge: 25
  • Beigetreten: 08. Juli 11
  • Reputation: 1
  • Geschlecht:Männlich
  • Wohnort:Göppingen
  • Interessen:Software-Entwickeln ;-)

geschrieben 08. Juli 2011 - 19:31

Das was Du vermutlich suchst heißt auf Englisch "Impersonation", auf Deutsch "Identitätswechsel".

Ich habe mal vor Jahren eine Klasse bei CodeProject dazu geschrieben:

http://www.codeproje...personator.aspx

Da packst Du den höher privillegierten Code in einen USING-Block, übergibst Benutzername, Kennwort eines höheren Benutzers und bist fertig.
0

#7 Mitglied ist offline   Ludacris 

  • Gruppe: Moderation
  • Beiträge: 4.689
  • Beigetreten: 28. Mai 06
  • Reputation: 218
  • Geschlecht:Männlich

geschrieben 11. Juli 2011 - 14:27

Ich glaube da ist das problem dass er es automatisch möchte und auf mehreren PCs, auch von anderen Usern die den Code nicht haben... ich würde es über die manifests lösen sodass er einfach admin access benötigt, denn dann passt der regedit pfad
0

#8 Mitglied ist offline   gimpfenlord 

  • Gruppe: aktive Mitglieder
  • Beiträge: 221
  • Beigetreten: 31. August 05
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Stuttgart

geschrieben 11. Juli 2011 - 14:42

du kannst doch auch per gruppenrichtlinie einstellen das der user die registry bearbeiten kann.
Eingefügtes Bild
0

#9 _der dom_

  • Gruppe: Gäste

geschrieben 22. Juli 2011 - 22:17

Wenn würde ich das höchstens in der Setuproutine erlauben. Sonst immer nur unter LocalMachine - allesandere kann dir u.U. das Genick brechen.

Registryeinträge sind immer mit Vorsicht zu händeln. Ich hab hier ein Projekt bei dem ich in die LocalMachine schreibe und der erste Tester hat sich, dank seiner höchstqualifizierten Nutzereigenschaft das Ganze in der Config -> ja das war der Wunsch dass der Pfad dort angepasst werden soll, umgeschrieben und seine Registry zerschossen.

Sonst versuch es wie gimpfenlord es schon erwähnte über die Gruppenrichtlinien - allerdings nur, wenn du weißt was du da machst. Es kann dich Wochen kosten das wieder auszubügeln.
0

#10 Mitglied ist offline   m4rkus 

  • Gruppe: aktive Mitglieder
  • Beiträge: 316
  • Beigetreten: 28. Juni 06
  • Reputation: 0

geschrieben 22. Juli 2011 - 23:17

Hi,

danke für die vielen Antworten, hatte ehrlich nicht mit so viel Rückmeldung gerechnet.
das Projekt ist gerade noch am Entstehen, und es ist noch keine endgültige Entscheidung gefallen wie wir die Sache mit der Registry lösen. Aktuell hab ichs zum Testen mit der Lösung über den Dienst realisiert.

Folgende Lösungen kämen also noch in Frage:
- Dienst übernimmt schreiben der Reg-Keys
- Erlangen von höheren Berechtigungen durch Impersonation
- Rechtevergabe über Gruppenrichtlinie

Danke für die Vorschläge, Ihr habt mir schon sehr weitergeholfen.

Gruß,
markus
2*3=4
0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0