Je l'ai fait plusieurs fois. L'idée est de mettre à jour le HKCU de l'utilisateur actuellement connecté (c'est assez facile). Ensuite, vous devez énumérer chaque profil sur le système et trouver leur fichier ntuser.dat (c'est assez facile aussi).
Avec le fichier ntuser.dat trouvé, vous chargez dans une clé temporaire dans la ruche HKLM (je l'habitude d'utiliser « HKLM \ TempHive ». Vous pouvez alors modifier loin.
S'il y a plus de 1 utilisateur connecté , leur profil sera chargé sous HKEY_USERS, par leur SID, il suffit de mettre à jour cet emplacement
Pour modifier le paramètre pour les nouveaux utilisateurs, il suffit de modifier la clé appropriée sous HKEY_USERS.DEFAULT, OU utilisez le code Delphi ci-dessous qui fera l'objet En chargeant la ruche de registre HKCU des utilisateurs par défaut (stockée dans ntuser.dat),
UPDATE: J'ai trouvé mon code Delphi qui montre comment mettre à jour les ruches HKCU des utilisateurs qui ne sont pas connectés au système.
Cela nécessite le composant 'Privilege' de Russell Libby, which is available here. J'ai également écrit un VBScript il y a un certain temps qui accomplit cette tâche. Je l'ai utilisé pour modifier certains paramètres d'Internet Explorer, mais vous pouvez le personnaliser selon vos besoins. Il illustre également le processus général:
Option Explicit
Dim fso
Dim WshShell
Dim objShell
Dim RegRoot
Dim strRegPathParent01
Dim strRegPathParent02
Set fso = CreateObject("Scripting.FileSystemObject")
Set WshShell = CreateObject("WScript.shell")
'==============================================
' Change variables here
'==============================================
'
'This is where our HKCU is temporarily loaded, and where we need to write to it
RegRoot = "HKLM\TEMPHIVE"
'
strRegPathParent01 = "Software\Microsoft\Windows\CurrentVersion\Internet Settings"
strRegPathParent02 = "Software\Microsoft\Internet Explorer\Main"
'
'======================================================================
Call ChangeRegKeys() 'Sets registry keys per user
Sub ChangeRegKeys
'Option Explicit
On Error Resume Next
Const USERPROFILE = 40
Const APPDATA = 26
Dim iResult
Dim iResult1
Dim iResult2
Dim objShell
Dim strUserProfile
Dim objUserProfile
Dim strAppDataFolder
Dim strAppData
Dim objDocsAndSettings
Dim objUser
Set objShell = CreateObject("Shell.Application")
Dim sCurrentUser
sCurrentUser = WshShell.ExpandEnvironmentStrings("%USERNAME%")
strUserProfile = objShell.Namespace(USERPROFILE).self.path
Set objUserProfile = fso.GetFolder(strUserProfile)
Set objDocsAndSettings = fso.GetFolder(objUserProfile.ParentFolder)
'Update settings for the user running the script
'(0 = default, 1 = disable password cache)
WshShell.RegWrite "HKCU\" & strRegPathParent01 & "\DisablePasswordCaching", "00000001", "REG_DWORD"
WshShell.RegWrite "HKCU\" & strRegPathParent02 & "\FormSuggest PW Ask", "no", "REG_SZ"
strAppDataFolder = objShell.Namespace(APPDATA).self.path
strAppData = fso.GetFolder(strAppDataFolder).Name
' Enumerate subfolders of documents and settings folder
For Each objUser In objDocsAndSettings.SubFolders
' Check if application data folder exists in user subfolder
If fso.FolderExists(objUser.Path & "\" & strAppData) Then
'WScript.Echo "AppData found for user " & objUser.Name
If ((objUser.Name <> "All Users") and _
(objUser.Name <> sCurrentUser) and _
(objUser.Name <> "LocalService") and _
(objUser.Name <> "NetworkService")) then
'Load user's HKCU into temp area under HKLM
iResult1 = WshShell.Run("reg.exe load " & RegRoot & " " & chr(34) & objDocsAndSettings & "\" & objUser.Name & "\NTUSER.DAT" & chr(34), 0, True)
If iResult1 <> 0 Then
WScript.Echo("*** An error occurred while loading HKCU: " & objUser.Name)
Else
WScript.Echo("HKCU loaded: " & objUser.Name)
End If
WshShell.RegWrite RegRoot & "\" & strRegPathParent01 & "\DisablePasswordCaching", "00000001", "REG_DWORD"
WshShell.RegWrite RegRoot & "\" & strRegPathParent02 & "\FormSuggest PW Ask", "no", "REG_SZ"
iResult2 = WshShell.Run("reg.exe unload " & RegRoot,0, True) 'Unload HKCU from HKLM
If iResult2 <> 0 Then
WScript.Echo("*** An error occurred while unloading HKCU: " & objUser.Name & vbcrlf)
Else
WScript.Echo(" unloaded: " & objUser.Name & vbcrlf)
End If
End If
Else
'WScript.Echo "No AppData found for user " & objUser.Name
End If
Next
End Sub
Pourquoi souhaitez-vous que tous les utilisateurs partagent le même dossier? Cela va ennuyer beaucoup d'utilisateurs s'ils finissent par écraser les favoris de l'autre. –
D'accord - ne changez pas l'emplacement. Utilisez plutôt les favoris communs: Favoris pour tous les utilisateurs: C: \ Documents and Settings \ tous les utilisateurs \ Favoris Favoris pour un utilisateur spécifique: C: \ Documents and Settings \ \ Favorites –
DmitryK
Oui, Remus, les gens ont utilisé ces fonctions . S'il vous plaît, posez simplement la question que vous vouliez vraiment poser à leur sujet. Oui/non, des questions comme ça ne sont pas utiles. –