johann.z
Goto Top

PowerShell. HKLM. Set-ItemProperty ohne Admin-Rechte

Hallo zusammen,

wie kann in PowerShell eine Credential so verwendet werden, dass ein Script (als .exe) einen Reg-Eintag in HKLM ohne Admin-Rechte ändern kann?
PS-Script mit einer GUI wird den Usern als .exe zur Verfügung gestellt.
Der User bzw. die User haben keine lokalen Admin-Rechte, ist eine Domäne (AD).

Ohne Admin-Rechte darf in HKLM aber nichts geändert werden und das ist aktuell mein Problem.

Ich habe den Ansatz ausprobiert, aber es funktioniert nur bei dem Benutzer, mit dem die wwsd.xml erstellt wurde:

# Cred-Export
$PNd = Get-Credential -Message 'P' -UserName 'xx\Administrator'  
$PNd | Export-Clixml -Path 'C:\Temp\wwsd.xml'  
# Cred-Import
$Cred = Import-Clixml -Path 'C:\temp\wwsd.xml'  
$Zugang = New-Object System.Management.Automation.PSCredential( $Cred )
$key_BEA_HKLM = 'HKLM:\SOFTWARE\SolidWorks\AddIns\{461C5CA1-37AF-4948-910F-CAEEFB403814}'  
Start-Process powershell.exe -ArgumentList "-Command Set-ItemProperty -Path '$key_BEA_HKLM' -Value 754 -Name '(default)'" -Credential $Zugang  

Wechselt man den User (ohne Admin-Rechte), dann erscheint nach Ausführen (GUI Button-Event) eine Login-Abfrage. Kann ich so leider nicht gebrauchen.
Das ist aber normales Verhalten, so wie ich es gelesen habe.

Welche anderen Ansätze gibt es, um dem Script (als .exe ausführbar gemacht) die Rechte dennoch zu erteilen?
Als Werkzeug stehen mir vorrangig PowerShell und wenn es nicht anders geht C# mit Visual-Studio zur Verfugung.
Denn ein Programm, was wir im Einsatz haben, kann den Schlüssel $key_BEA_HKLM ändern, obwohl es ohne Admin-Rechte gestartet wird.


Der Sicherheitsaspekt ist dabei sehr wichtig.

Vielen Dank im Voraus

Content-ID: 3059804937

Url: https://administrator.de/forum/powershell-hklm-set-itemproperty-ohne-admin-rechte-3059804937.html

Ausgedruckt am: 25.12.2024 um 02:12 Uhr

fisi-pjm
fisi-pjm 12.06.2022 um 23:28:36 Uhr
Goto Top
Gib dem Benutzer der HKLM ändern können soll die rechte auf den Schlüssel,

Gruß
Pjm
SeaStorm
Lösung SeaStorm 13.06.2022 um 00:17:25 Uhr
Goto Top
Zitat von @Johann.Z:

Denn ein Programm, was wir im Einsatz haben, kann den Schlüssel $key_BEA_HKLM ändern, obwohl es ohne

Schau mal per Procmon welcher Prozess die Änderung tatsächlich schreibt. Oftmals läuft ein Dienst als System und es wird dem nur gesagt das er das tun soll.
Oder schau dir von dem Registrykey die Berechtigungen mal genauer an, was da schreiben darf
DerWoWusste
DerWoWusste 13.06.2022 um 09:21:56 Uhr
Goto Top
Hi.

Warum soll das der Nutzer machen? Mach es doch selbst über eine GPO, dann hast Du keine Sorgen.
Johann.Z
Johann.Z 13.06.2022 um 10:37:18 Uhr
Goto Top
So wie es aussieht, gibt keine sichere Methode Authentifizierungsinformationen im Code zu speichern ohne, dass diese irgendwann entschlüsselt im RAM landen. Und es ist eigentlich so nicht richtig, daher verwerfe ich das Vorhaben mit Credential im Sourcecode.

Vielen Dank für die Vorschläge
DerWoWusste
DerWoWusste 13.06.2022 um 10:40:27 Uhr
Goto Top
So wie es aussieht, gibt keine sichere Methode Authentifizierungsinformationen im Code zu speichern ohne, dass diese irgendwann entschlüsselt im RAM landen
Du sagst es. Deshalb macht man das über eine GPO, die läuft im Systemkontokontext und darf dort schreiben.