AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Benutzerrechte

Ein Thema von Satyr · begonnen am 14. Feb 2023 · letzter Beitrag vom 16. Feb 2023
Antwort Antwort
Seite 1 von 2  1 2      
Satyr

Registriert seit: 8. Feb 2012
Ort: Essen
305 Beiträge
 
Delphi 10.4 Sydney
 
#1

Benutzerrechte

  Alt 14. Feb 2023, 18:57
Ich habe ein Problem mit Nutzerrechten in Windows10.

Manche wissen, ich spiele mit den Möglichkeiten eines WebDav herum.
Soweit klappt alles. Ich habe mir ein kleines Tool gebastelt das meine Festplatten anzeigt, ein WebDav als Laufwerk verbinden lässt oder bei Bedarf wieder trennt.

Als kleines Sahnehäubchen wollte ich das Laufwerkssymbol anpassen. Ist über die Registry ja nicht schwierig, eigentlich.

Das funktioniert nur über Admin Rechte. Kein Problem, dachte ich. Dem Programm in den Optionen den Admin Status gegeben, Delphi als Admin gestartet.
Alles funktioniert. Nur hier ein Problem:

Außerhalb Delphi bin ich ein normaler User. Ich sehe nicht die Laufwerke die der Admin anlegte. Starte ich das kleine Programm außerhalb von Delphi als normaler User, kann ich Laufwerke anlegen, die wiederum ein Admin nicht sieht. Das Laufwerksicon kann ich als normaler User nicht wechseln.

Das unter dem jeeweiligen User die Laufwerke erstellt/getrennt werden wie gewünscht, sehe ich im cmd Fenster (/net use *). Als User gestartet sehe ich die vom normaluser angelegten, als Admin gestartet sehe ich die vom Admin angelegten.

Welche Möglichkeiten habe ich, ohne in Windows näher eingreifen zu müssen? Habe ich überhaupt welche?
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.580 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Benutzerrechte

  Alt 14. Feb 2023, 20:56
Du kannst dir auf deinem privaten PC einfach in regedit die Rechte auf dem Schlüssel geben, so dass du in den Registry Eintrag auch ohne Adminrechte schreiben kannst.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Satyr

Registriert seit: 8. Feb 2012
Ort: Essen
305 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Benutzerrechte

  Alt 14. Feb 2023, 21:11
Du kannst dir auf deinem privaten PC einfach in regedit die Rechte auf dem Schlüssel geben, so dass du in den Registry Eintrag auch ohne Adminrechte schreiben kannst.
Danke, probiere ich nachher oder morgen (PC ist grade mit meiner Freundin in Hogwarts )

Per Delphi kann ich da nichts machen, oder? Wegen Weitergabe von dem Tool.
  Mit Zitat antworten Zitat
CCRDude

Registriert seit: 9. Jun 2011
678 Beiträge
 
FreePascal / Lazarus
 
#4

AW: Benutzerrechte

  Alt 15. Feb 2023, 16:38
Das Problem kenne ich, bin zufälligerweise heute wieder drüber gestolpert. Ich helfe mir dann meist, in dem ich einen Datei-Browser (Explorer, Total Commander) elevated (als Admin) starte und einfach nur einmal auf das Share zugreife, danach ist es ganz verfügbar. Alternative im als Admin laufenden Delphi im Datei-Öffnen-Dialog nur einmal drauf zugreifen...

Insofern wird's ziemlich sicher auch Code dafür geben, ohne dass man an Rechten rumbastelt.

(PS: UNC-Pfad soll gehen)

(PS #2: das funktioniert natürlich nur, weil Windows sich die Credentials gemerkt hat... wenn ich über Deinen Fall weiter nachdenke, müsstest Du für diesen Anwendungsfall wohl die Verbindung für beide Access Token erstellen)

Geändert von CCRDude (15. Feb 2023 um 17:04 Uhr)
  Mit Zitat antworten Zitat
Satyr

Registriert seit: 8. Feb 2012
Ort: Essen
305 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: Benutzerrechte

  Alt 15. Feb 2023, 18:17
(PS #2: das funktioniert natürlich nur, weil Windows sich die Credentials gemerkt hat... wenn ich über Deinen Fall weiter nachdenke, müsstest Du für diesen Anwendungsfall wohl die Verbindung für beide Access Token erstellen)
Ich habe noch viel gegoogelt gestern und auch einiges gefunden gestern. Die ShellApi bietet auch Möglichkeiten, die nur teilweise Adminrechte brauchen.

Ich habe mich entschieden alles ein wenig zu umgehen.
Ich habe beschlossen das Tool nur auf Nutzer Ebene zu empfehlen und ein kleines Setup dazu gebastelt. Das Setup setzt die Rechte des Registry Key und alles unter dem, wie benötigt und gut ist.

Nicht die eleganteste "Lösung" aber die, sie für mich am besten umsetzbar ist.
  Mit Zitat antworten Zitat
CCRDude

Registriert seit: 9. Jun 2011
678 Beiträge
 
FreePascal / Lazarus
 
#6

AW: Benutzerrechte

  Alt 16. Feb 2023, 08:17
Entschuldige, ich hab Dein Problen glaube ich etwas falsch wahrgenommen.

Registry-Rechte aufweichen im Installer ist irgendwie sehr unschön.

Ging es nur darum, das Icon zu setzen, während das Programm non-elevated läuft?

ShellExecute(Application.MainForm.Handle, 'runas', PChar(ParamStr(0)), PChar(ADrive), nil, SW_HIDE);
Delphi-Quellcode:
program blub;
...
begin
   if FindCmdLineSwitch('seticon') then begin
      // set icon for ParamStr(2) in registry
      Exit;
   end;
   Application.Initialize ...
Besser als sich selbst mit Parametern aufzurufen wäre natürlich eine Mini-Konsolen-Exe ohne alles, nur mit dieser Funktion, um die Elevation so klein wie möglich zu halten.

Das wäre auf jeden Fall "korrekteres" Vorgehen, denn:

* Programme sollte non-elevated laufen können (siehe auch MS-Vorgaben für Compatible with Windows &c)
* Elevaten nur für einzelne Aktionen ist immer sicherer als Programme ganz elevated laufen zu lassen
* Programme sollten keine Rechte aufweichen wo nicht unbedingt nötig (siehe AV-Heuristiken)

Ja, dann fragt das Programm jedesmal nach Admin-Rechten, wenn eine Verknüpfung erstellt wird. Würde es, wenn das Programm selber elevated läuft, ja auch, und entspricht dem, was passiert.
  Mit Zitat antworten Zitat
Satyr

Registriert seit: 8. Feb 2012
Ort: Essen
305 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: Benutzerrechte

  Alt 16. Feb 2023, 12:55
Ja, mein Problem sitzt an mehreren Stellen und ich weiß das meine Lösung im Grunde nicht toll ist.

Das Tool um das es geht, verbindet ein NavDav als Netzlaufwerk.
Mache ich das als normaler Benutzer, sieht der Admin User das Laufwerk nicht.
Mache ich das mit dem Tool als Admin, sieht der normale Benutzer das Laufwerk nicht.

An der Stelle habe ich mich entschieden alles für den normalen Benutzer zu lassen.

Zum Schluss wollte ich dann noch "mal eben" einbauen dass das Icon des neuen Netzlaufwerk geändert wird. Was komplizierter ist als ich dachte (für mich).

Ich habe es über die Shell versucht, es hat bei mir leider nicht funktioniert.
Also habe ich die zweite Möglichkeit probiert, die Registry.
Das funktioniert an sich problemlos, benötigt aber Adminrechte. Die ich dem Programm nicht geben möchte, aus oben genannten Grund.

Ein Teufelskreis
  Mit Zitat antworten Zitat
shebang

Registriert seit: 7. Feb 2020
124 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Benutzerrechte

  Alt 16. Feb 2023, 17:07
Du könntest dir auch eine Registrierungsdatei bauen und diese dann mit erhöhten Privilegien ausführen, funktioniert einwandfrei.
Code:
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE]
"Test"="0001"
Code:
ShellExecute(Application.Handle, 'runas', 'cmd.exe', '/c test.reg', nil, SW_SHOWNORMAL)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.049 Beiträge
 
Delphi 12 Athens
 
#9

AW: Benutzerrechte

  Alt 16. Feb 2023, 17:51
Da kann man aber auch direkt die reg.exe als Admin ausführen
https://learn.microsoft.com/de-de/wi...s-commands/reg

oder sein Programm als Admin starten oder einen Thread kurzzeitig als Admin und dann die WinAPI oder TRegistry
oder ...

bzw. statt "admin" gezielt nur die nötigen Rechte anfordern.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Satyr

Registriert seit: 8. Feb 2012
Ort: Essen
305 Beiträge
 
Delphi 10.4 Sydney
 
#10

AW: Benutzerrechte

  Alt 16. Feb 2023, 19:18
Du könntest dir auch eine Registrierungsdatei bauen und diese dann mit erhöhten Privilegien ausführen, funktioniert einwandfrei.
Code:
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE]
"Test"="0001"
Code:
ShellExecute(Application.Handle, 'runas', 'cmd.exe', '/c test.reg', nil, SW_SHOWNORMAL)
Danke, auf die Idee bin ich noch nicht gekommen. Liegt eigentlich nahe.
Ich probiere es am Wochenende.

@himitsu
Genau solche Möglichkeiten habe ich am Anfang versucht durchzuprobieren. Leider ohne Erfolg. Was an mir liegen wird. Das es die Möglichkeiten gibt habe ich gelesen. Das Umsetzen hat nicht geklappt.
Deshalb habe ich nach einer vermeintlich einfacheren Lösung gesucht und bin auf die mit der Registry gestoßen.

Ich habe die Lösung mit kleinem Setup übrigens verworfen. Das dies eigentlich besch***** ist, ließ mir keine Ruhe.

Ich habe nu einfach einen Button eingebaut der Regedit an der benötigten Stelle öffnet und eine 3 Zeilen Anleitung welche Rechte wo geändert werden müssen. Da Regedit ja selbst die Admin Rechte fordert, reicht das fürs erste.

@himitsu @shebang

Ich probiere am Wochenende ob ich Eure Tipps hinbekomme. Nur den Thread als Admin starten, daran habe ich nicht gedacht.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 12:27 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz