hab mich schon durch Google und Co. gewühlt, aber keine verlässliche Info gefunden.
Ich muss für eine Installation einen Registryeintrag setzen. Grundsätzlich ja keine Hexerei.
Jetzt muss der Parameter aber in HKEY_CURRENT_USER untergebracht werden. Auch erst mal kein Problem. dafür gibt es ja das '/AllNtuserdats' was dafür sorgt, das es einfach für jeden User gesetzt wird.
Soweit so gut, das kann ich auch so nehmen. Jetzt kommt der Haken.
In dem Parameter kann schon was drin stehen. Ein CSV Wert. Der String der hinzugefügt werden soll, kann aber potentiell auch schon drin stehen. Ich muss also je User eigentlich testen ob der Key schon den String enthält.
Dafür gibts ganz praktisch (zumindest theoretisch) die Funktion contains(string,suchstring).
Konkreter Fall:
Im Userprofil genauer in den Policies sollen Syncausnahmen hinzugefügt werden. Der Schlüssel dazu ist:
[HKEY_CURRENT_USER\Software\Policies\Microsoft\Windows\System] ExcludeProfileDirs
Da steht dann z.B. 'testordner;neuerOrdner' drin, oder eben nur 'testordner'. Das Script müsste nun schauen, steht da schon neuerOrdner drin. Wenn ja, tue nichts, wenn nein fügen ihn an.
Grundsätzlich hatte ich an sowas gedacht (so als Testscript erstmal ohne schreiben.):
Code: Alles auswählen
[Aktionen]
DefVar $readstring$
DefVar $searchstring$
DefVar $newstring$
set $readstring$ = GetRegistryStringValue("[HKEY_CURRENT_USER\Software\Policies\Microsoft\Windows\System] ExcludeProfileDirs")
set $searchstring$="owncloud"
set $newstring$=$readstring$+";"+$searchstring$
if contains($readstring$, $searchstring$)
pause "passed: Value stays= "+$readstring$
else
pause "failed: set new value="+$newstring$+""
registry_dontsync /AllNtuserdats
endif
Message "All Done"
[Registry_dontsync]
openkey [HKEY_CURRENT_USER\Software\Policies\Microsoft\Windows\System]
set"ExcludeProfileDirs"=REG_SZ:"$newsring$"
D.h. so wie ich es sehe läuft das nicht für jeden Benutzer.
Hat irgendwer ne Idee wie ich das realisieren kann?
Danke und Gruß
Florian