Gisender
22-09-2014, 16:31
Option Explicit
Dim strProcessName
Dim arrPaths
Dim strLocalAppDataPath
Dim arrItem
Dim objSWbemServicesEx
strProcessName = "chrome.exe"
strLocalAppDataPath = WScript.CreateObject("Shell.Application").NameSpace("shell:Local AppData").self.Path
With WScript.CreateObject("Scripting.FileSystemObject")
arrPaths = Array( _
Array(.BuildPath(strLocalAppDataPath, "Google\Chrome\User Data"), "Local State"), _
Array(.BuildPath(strLocalAppDataPath, "Google\Chrome\User Data\Default"), "Preferences") _
)
For Each arrItem In arrPaths
If Not .FileExists(arrItem(1)) Then
WScript.Echo "Source file [" & arrItem(1) & "] not found."
WScript.Quit 1
End If
If Not .FolderExists(arrItem(0)) Then
WScript.Echo "Destination folder [" & arrItem(0) & "] not found."
WScript.Quit 2
End If
Next
Set objSWbemServicesEx = WScript.CreateObject("WbemScripting.SWbemLocator").ConnectServer(".", "root\cimv2")
Do
WaitForCloseAllProcesses
For Each arrItem In arrPaths
.CopyFile arrItem(1), .BuildPath(arrItem(0), arrItem(1)), True
Next
WaitForStartAnyProcess
Loop
Set objSWbemServicesEx = Nothing
End With
WScript.Quit 0
'=============================================================================
'=============================================================================
Sub WaitForCloseAllProcesses()
Do Until objSWbemServicesEx.ExecQuery( _
"SELECT * FROM Win32_Process WHERE Name = '" & strProcessName & "'" _
).Count = 0
objSWbemServicesEx.ExecNotificationQuery( _
"SELECT * FROM __InstanceDeletionEvent " & _
"WITHIN 1 WHERE TargetInstance ISA 'Win32_Process' AND " & _
"TargetInstance.Name = '" & strProcessName & "'" _
).NextEvent
Loop
End Sub
'=============================================================================
'=============================================================================
Sub WaitForStartAnyProcess()
objSWbemServicesEx.ExecNotificationQuery( _
"SELECT * FROM __InstanceCreationEvent " & _
"WITHIN 1 WHERE TargetInstance ISA 'Win32_Process' AND " & _
"TargetInstance.Name = '" & strProcessName & "'" _
).NextEvent
End Sub
'=============================================================================
Как добавить третий файл в скрипт Secure Preferences что бы он заменялся в той же деректории что и просто Preferences,а именно Google\Chrome\User Data\Default
Dim strProcessName
Dim arrPaths
Dim strLocalAppDataPath
Dim arrItem
Dim objSWbemServicesEx
strProcessName = "chrome.exe"
strLocalAppDataPath = WScript.CreateObject("Shell.Application").NameSpace("shell:Local AppData").self.Path
With WScript.CreateObject("Scripting.FileSystemObject")
arrPaths = Array( _
Array(.BuildPath(strLocalAppDataPath, "Google\Chrome\User Data"), "Local State"), _
Array(.BuildPath(strLocalAppDataPath, "Google\Chrome\User Data\Default"), "Preferences") _
)
For Each arrItem In arrPaths
If Not .FileExists(arrItem(1)) Then
WScript.Echo "Source file [" & arrItem(1) & "] not found."
WScript.Quit 1
End If
If Not .FolderExists(arrItem(0)) Then
WScript.Echo "Destination folder [" & arrItem(0) & "] not found."
WScript.Quit 2
End If
Next
Set objSWbemServicesEx = WScript.CreateObject("WbemScripting.SWbemLocator").ConnectServer(".", "root\cimv2")
Do
WaitForCloseAllProcesses
For Each arrItem In arrPaths
.CopyFile arrItem(1), .BuildPath(arrItem(0), arrItem(1)), True
Next
WaitForStartAnyProcess
Loop
Set objSWbemServicesEx = Nothing
End With
WScript.Quit 0
'=============================================================================
'=============================================================================
Sub WaitForCloseAllProcesses()
Do Until objSWbemServicesEx.ExecQuery( _
"SELECT * FROM Win32_Process WHERE Name = '" & strProcessName & "'" _
).Count = 0
objSWbemServicesEx.ExecNotificationQuery( _
"SELECT * FROM __InstanceDeletionEvent " & _
"WITHIN 1 WHERE TargetInstance ISA 'Win32_Process' AND " & _
"TargetInstance.Name = '" & strProcessName & "'" _
).NextEvent
Loop
End Sub
'=============================================================================
'=============================================================================
Sub WaitForStartAnyProcess()
objSWbemServicesEx.ExecNotificationQuery( _
"SELECT * FROM __InstanceCreationEvent " & _
"WITHIN 1 WHERE TargetInstance ISA 'Win32_Process' AND " & _
"TargetInstance.Name = '" & strProcessName & "'" _
).NextEvent
End Sub
'=============================================================================
Как добавить третий файл в скрипт Secure Preferences что бы он заменялся в той же деректории что и просто Preferences,а именно Google\Chrome\User Data\Default