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-Key: 3059804937

Url: https://administrator.de/contentid/3059804937

Printed on: July 21, 2024 at 22:07 o'clock

Member: fisi-pjm
fisi-pjm Jun 12, 2022 at 21:28:36 (UTC)
Goto Top
Gib dem Benutzer der HKLM ändern können soll die rechte auf den Schlüssel,

Gruß
Pjm
Member: SeaStorm
Solution SeaStorm Jun 12, 2022 at 22:17:25 (UTC)
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
Member: DerWoWusste
DerWoWusste Jun 13, 2022 at 07:21:56 (UTC)
Goto Top
Hi.

Warum soll das der Nutzer machen? Mach es doch selbst über eine GPO, dann hast Du keine Sorgen.
Member: Johann.Z
Johann.Z Jun 13, 2022 at 08:37:18 (UTC)
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
Member: DerWoWusste
DerWoWusste Jun 13, 2022 at 08:40:27 (UTC)
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.