Код:
Option Explicit
Const strExportedCryptoProFile = "Exported Crypto Pro.reg"
Const strReplacePatternForCurrentUserSID = "@@@CurrentUserSID@@@"
Const HKEY_LOCAL_MACHINE = &H80000002
Const ForReading = 1
Const TristateTrue = -1
Const SystemFolder = 1
Dim objSWbemLocator
Dim objFSO
Dim strContent
Dim strValue
Dim strCurrentUserSID
If WScript.Arguments.Count = 1 Then
Set objSWbemLocator = WScript.CreateObject("WbemScripting.SWbemLocator")
Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
Select Case LCase(WScript.Arguments.Item(0))
Case "/export"
With objSWbemLocator.ConnectServer(".", "root\default").Get("StdRegProv")
If .GetStringValue(HKEY_LOCAL_MACHINE, "SOFTWARE\Crypto Pro\Settings", "Version", strValue) = 0 Then
WScript.CreateObject("WScript.Shell").Run """reg.exe"" export ""HKEY_LOCAL_MACHINE\SOFTWARE\Crypto Pro"" """ & strExportedCryptoProFile & """ /y", 0, True
ElseIf .GetStringValue(HKEY_LOCAL_MACHINE, "SOFTWARE\Wow6432Node\Crypto Pro\Settings", "Version", strValue) = 0 Then
WScript.CreateObject("WScript.Shell").Run """reg.exe"" export ""HKEY_LOCAL_MACHINE\SOFTWARE\Crypto Pro"" """ & strExportedCryptoProFile & """ /y /reg:32", 0, True
Else
WScript.Echo "Can't find [Crypto Pro] subkey in registry."
WScript.Quit 2
End If
End With
With WScript.CreateObject("WinNTSystemInfo")
strCurrentUserSID = objSWbemLocator.ConnectServer(".", "root\cimv2").Get("Win32_UserAccount.Domain='" & .DomainName & "',Name='" & .UserName & "'").SID
End With
With objFSO.OpenTextFile(strExportedCryptoProFile, ForReading, False, TristateTrue)
strContent = Replace(.ReadAll(), strCurrentUserSID, strReplacePatternForCurrentUserSID)
.Close
End With
With objFSO.CreateTextFile(strExportedCryptoProFile, True, True)
.Write strContent
.Close
End With
Case "/import"
If objFSO.FileExists(strExportedCryptoProFile) Then
With WScript.CreateObject("WinNTSystemInfo")
strCurrentUserSID = objSWbemLocator.ConnectServer(".", "root\cimv2").Get("Win32_UserAccount.Domain='" & .DomainName & "',Name='" & .UserName & "'").SID
End With
With objFSO.OpenTextFile(strExportedCryptoProFile, ForReading, False, TristateTrue)
strContent = Replace(.ReadAll(), strReplacePatternForCurrentUserSID, strCurrentUserSID)
.Close
End With
With objFSO.CreateTextFile(strExportedCryptoProFile, True, True)
.Write strContent
.Close
End With
WScript.CreateObject("WScript.Shell").Run """reg.exe"" import """ & strExportedCryptoProFile & """ /reg:32", 0, True
Else
WScript.Echo "Can't find exported Crypto Pro file [" & strExportedCryptoProFile & "]."
WScript.Quit 3
End If
Case Else
WScript.Echo "Usage: cscript.exe //nologo """ & WScript.ScriptName & """ /export|/import"
WScript.Quit 1
End Select
Set objFSO = Nothing
Set objSWbemLocator = Nothing
Else
WScript.Echo "Usage: cscript.exe //nologo """ & WScript.ScriptName & """ /export|/import"
WScript.Quit 1
End If
WScript.Quit 0