Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 'Copyright (c) Microsoft Corporation. All rights reserved.
- '////////////////////////////////////////////////////////////////////////////////////////
- '////////////////////////////////////////////////////////////////////////////////////////
- CONST wshOK =0
- CONST VALUE_ICON_WARNING =16
- CONST wshYesNoDialog =4
- CONST VALUE_ICON_QUESTIONMARK =32
- CONST VALUE_ICON_INFORMATION =64
- CONST HKEY_LOCAL_MACHINE =&H80000002
- CONST KEY_SET_VALUE =&H0002
- CONST KEY_QUERY_VALUE =&H0001
- CONST REG_SZ =1
- CONST OfficeAppId = "0ff1ce15-a989-479d-af46-f275c6370663"
- CONST STR_SYS32PATH = ":\Windows\System32\"
- CONST STR_OSPPREARMPATH = "\Microsoft Office\Office15\OSPPREARM.EXE"
- CONST STR_OSPPREARMPATH_DEBUG = "\Microsoft Office Debug\Office15\OSPPREARM.EXE"
- CONST REG_OSPP = "SOFTWARE\Microsoft\OfficeSoftwareProtectionPlatform"
- CONST REG_SPP = "SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform"
- CONST VER_INFO = "Version Info: 2013 1.0 (RTM)"
- '////////////////////////////////////////////////////////////////////////////////////////
- CONST MSG_NOREGRIGHTS = "Insufficient rights to perform operation."
- CONST MSG_ISCMD_ELEVATED = "Ensure cmd.exe is elevated (right click > run as administrator)."
- CONST MSG_CREDENTIALFAILURE = "Connection failed with passed credentials."
- CONST MSG_FILENOTFOUND = "File not found: "
- CONST MSG_SEPERATE = "---------------------------------------"
- CONST MSG_PROCESSING = "---Processing--------------------------"
- CONST MSG_EXIT = "---Exiting-----------------------------"
- CONST MSG_UNSUPPORTED = "Unsupported command passed."
- CONST MSG_UNSUPPORTEDOPEROS7 = "The following command is supported on Windows 7 only: "
- CONST MSG_UNSUPPORTEDOPEROS8 = "The following command is supported on Windows 8 and above only: "
- CONST MSG_UNSUPPORTEDLOCAL = "The following command is supported on local machine only: "
- CONST MSG_CREDENTIALERR = "Passing credentials is not supported for this command."
- CONST MSG_SUCCESS = "Successfully applied setting."
- CONST MSG_NOKMSLICS = "No Office KMS licenses were found on the system."
- CONST MSG_ACTATTEMPT = "Installed product key detected - attempting to activate the following product:"
- CONST MSG_TOKACTATTEMPT = "Installed product key detected - attempting to token activate the following product:"
- CONST MSG_NOKEYSINSTALLED = "<No installed product keys detected>"
- CONST MSG_UNINSTALLKEYSUCCESS = "<Product key uninstall successful>"
- CONST MSG_ACTSUCCESS = "<Product activation successful>"
- CONST MSG_OFFLINEACTSUCCESS = "<Offline product activation successful>"
- CONST MSG_KEYINSTALLSUCCESS = "<Product key installation successful>"
- CONST MSG_PARTIALKEY = "Last 5 characters of installed product key: "
- CONST MSG_UNINSTALLKEY = "Uninstalling product key for: "
- CONST MSG_UNRECOGFILE = "Unrecognized file. Office licenses have an .xrm-ms file extension."
- CONST MSG_INSTALLLICENSE = "Installing Office license: "
- CONST MSG_INSTALLLICSUCCESS = "Office license installed successfully."
- CONST MSG_SEARCHEVENTSKMS = "Searching for KMS activation events on machine: "
- CONST MSG_SEARCHEVENTSRET = "Searching for Internet activation failure events on machine: "
- CONST MSG_NOEVENTSSKMS = "No KMS activation events found on machine: "
- CONST MSG_NOEVENTSRET = "No failure events found on machine: "
- CONST MSG_OSPPSVC_NOINSTALL = "Error: The Software Protection Platform service is not installed."
- CONST MSG_OSPPSVC_NORUN = "Error: The Software Protection Platform service is not running."
- CONST MSG_ERRPARTIALKEY = "The last 5 characters of an installed product key are required to run this option. Run the /dstatus option to display the partial product key."
- CONST MSG_KEYNOTFOUND = "<Product key not found>"
- CONST MSG_CMID = "Client Machine ID (CMID): "
- CONST MSG_NOLICENSEFOUND = "<No licenses found>"
- CONST MSG_AUTHERR = "Authorization Error: 0x"
- CONST MSG_REMILID = "Removed Token-based Activation License with License ID (ILID): "
- CONST MSG_NOTFOUNDILID = "License not found with License ID (ILID): "
- CONST MSG_KMSLOOKUP = "KMS Lookup Domain: "
- CONST MSG_INFO_ONLY = " (for information purposes only as the status is licensed)"
- '////////////////////////////////////////////////////////////////////////////////////////
- CONST MSG_VLActivationType = "Activation Type Configuration: "
- '////////////////////////////////////////////////////////////////////////////////////////
- CONST MSG_Act_Recent = "Most recent successful activation client information: "
- CONST MSG_KMS_DNS = "KMS machine name from DNS: "
- CONST MSG_KMS_DNS_ERR = "DNS auto-discovery: KMS name not available"
- CONST MSG_ADInfoAOName = "Activation Object name: "
- CONST MSG_ADInfoAODN = "AO DN: "
- CONST MSG_ADInfoExtendedPid = "AO extended PID: "
- CONST MSG_ADInfoActID = "AO activation ID: "
- CONST MSG_ACTIVATION_INTERVAL = "Activation Interval: "
- CONST MSG_RENEWAL_INTERVAL = "Renewal Interval: "
- CONST MSG_HOST_CACHING = "KMS host caching: "
- CONST MSG_HOST_REG_OVERRIDE = "KMS machine registry override defined: "
- CONST MSG_DEFAULT_PORT = "1688"
- '////////////////////////////////////////////////////////////////////////////////////////
- CONST MSG_SKUID = "SKU ID: "
- CONST MSG_LICENSENAME = "LICENSE NAME: "
- CONST MSG_DESCRIPTION = "LICENSE DESCRIPTION: "
- CONST MSG_LICSTATUS = "LICENSE STATUS: "
- CONST MSG_LICENSED = " ---LICENSED--- "
- CONST MSG_UNLICENSED = " ---UNLICENSED--- "
- CONST MSG_OOBGRACE = " ---OOB_GRACE--- "
- CONST MSG_OOTGRACE = " ---OOT_GRACE--- "
- CONST MSG_NONGENGRACE = " ---NON_GENUINE_GRACE--- "
- CONST MSG_NOTIFICATION = " ---NOTIFICATIONS--- "
- CONST MSG_EXTENDEDGRACE = " ---EXTENDED GRACE--- "
- CONST MSG_LICUNKNOWN = " ---UNKNOWN--- "
- CONST MSG_REMAINGRACE = "REMAINING GRACE: "
- CONST MSG_LICEXPIRY = "BETA EXPIRATION: "
- CONST MSG_ERRCODE = "ERROR CODE: "
- CONST MSG_ERRDESC = "ERROR DESCRIPTION: "
- CONST MSG_ERRUNKNOWN = "An unknown error occurred."
- CONST MSG_ERRCODEVALUE = "An error code must start with '0x'. Example: 0xC004F009"
- '////////////////////////////////////////////////////////////////////////////////////////
- '////////////////////////////////////////////////////////////////////////////////////////
- On Error Resume Next
- Set WshShell = WSCript.CreateObject("WSCript.Shell")
- Set objFSO = CreateObject("Scripting.FileSystemObject")
- Set objNetwork = WSCript.CreateObject("WSCript.Network")
- Dim globalResource, globalErr, foundSlUi, strSluiPath, strLocal, objWMI, objWMI1, wmiErr, productinstances, strValue, Win7, productClass, tokenClass, intIsKms, kmsCounter, isAdActivated
- globalResource = ""
- globalErr = ""
- foundSlUi = False
- Win7 = False
- kmsCounter = 0
- isAdActivated = False
- currentDir = Left(WScript.ScriptFullName, InStrRev(WScript.ScriptFullName, "\"))
- Select Case WSCript.Arguments.Count
- Case 0
- verifyFileExists currentDir & "ospp.htm"
- showIePopUp currentDir & "ospp.htm"
- WScript.Quit
- Case 1
- var1 = WSCript.Arguments(0)
- Case 2
- var1 = WSCript.Arguments(0)
- var2 = WSCript.Arguments(1)
- Case 3
- var1 = WSCript.Arguments(0)
- var2 = WSCript.Arguments(1)
- var3 = WSCript.Arguments(2)
- Case 4
- var1 = WSCript.Arguments(0)
- var2 = WSCript.Arguments(1)
- var3 = WSCript.Arguments(2)
- var4 = WSCript.Arguments(3)
- Case Else
- End Select
- '////////////////////////////////////////////////////////////////////////////////////////
- '////////////////////////////////////////////////////////////////////////////////////////
- Call Main(var1,var2,var3,var4)
- '////////////////////////////////////////////////////////////////////////////////////////
- '////////////////////////////////////////////////////////////////////////////////////////
- Sub Main(strCommand,strMachine,strUser,strPassword)
- On Error Resume Next
- getEngine()
- pProcessing()
- getSlui()
- strLocal = objNetwork.ComputerName
- strCommand = LCase(strCommand)
- Select Case strCommand
- Case "/act", "/dstatus", "/dstatusall", "/dinstid", "/dtokils", _
- "/remhst", "/stokflag", "/ctokflag", "/dcmid", "/dtokcerts", "/ckms-domain"
- connectWMI strMachine,strUser,strPassword,""
- performLicAction strCommand,"",""
- Case "/dhistoryacterr", "/dhistorykms"
- connectWMI strMachine,strUser,strPassword,""
- performLicAction strCommand,"",strMachine
- Case "/puserops", "/duserops"
- connectWMI strMachine,strUser,strPassword,"reg"
- performRegAction strCommand
- Case "/osppsvcrestart", "/osppsvcauto"
- connectWMI strMachine,strUser,strPassword,""
- performServiceAction strCommand
- Case "/help", "help", "?", "/?", "/?"
- verifyFileExists currentDir & "ospp.htm"
- showIePopUp currentDir & "ospp.htm"
- quitExit()
- Case "/regmof"
- registerMof "osppwmi.mof"
- Case "/rearm"
- If strMachine = "" Then
- reARM ""
- Else
- globalPopFailure MSG_UNSUPPORTEDLOCAL & vbCr & strCommand,True
- End If
- quitExit()
- Case "/version"
- globalPopSuccess VER_INFO,True
- Case Else
- pos = InStr(strCommand,":")
- Select Case pos
- Case 7
- getCommand = Left(strCommand,6)
- Case 8
- getCommand = Left(strCommand,7)
- Case 13
- getCommand = Left(strCommand,12)
- Case Else
- globalPopFailure MSG_UNSUPPORTED,True
- End Select
- Select Case getCommand
- Case "/skms-domain", "/actype", "/inpkey", "/unpkey", "/inslic", "/actcid", "/sethst", "/setprt", "/ddescr", "/rtokil", "/tokact", "/cachst", "/rearm"
- strValue = Replace(strCommand,getCommand & ":","")
- If strValue = "" Then
- globalPopFailure MSG_UNSUPPORTED & " A value is required for: " & strCommand,True
- End If
- If getCommand = "/ddescr" Then
- If Left(strValue,2) = "0x" Then
- getDescription strValue,""
- Else
- WScript.Echo MSG_ERRCODEVALUE
- quitExit()
- End If
- ElseIf getCommand = "/rearm" Then
- If strMachine = "" Then
- reARM strValue
- Else
- globalPopFailure MSG_UNSUPPORTEDLOCAL & vbCr & strCommand,True
- End If
- quitExit()
- Else
- connectWMI strMachine,strUser,strPassword,""
- performLicAction getCommand,strValue,""
- End If
- Case Else
- globalPopFailure MSG_UNSUPPORTED,True
- End Select
- End Select
- End Sub
- '////////////////////////////////////////////////////////////////////////////////////////
- '////////////////////////////////////////////////////////////////////////////////////////
- Function showIePopUp(strPath)
- On Error Resume Next
- Set objExplorer = CreateObject("InternetExplorer.Application")
- With objExplorer
- .Navigate strPath
- .ToolBar = 0
- .StatusBar = 0
- .Width = 1000
- .Height = 593
- .Left = 1
- .Top = 1
- .Visible = 1
- End With
- End Function
- '////////////////////////////////////////////////////////////////////////////////////////
- '////////////////////////////////////////////////////////////////////////////////////////
- Function getEngine()
- strEngine = LCase(Right(WScript.FullName,12))
- If strEngine <> "\cscript.exe" Then
- WshShell.Popup "Unable to perform operation. " & WSCript.ScriptName & " requires the cscript engine." & _
- vbCr & "Command line example: cscript ospp.vbs ?", _
- ,WSCript.ScriptName, VALUE_ICON_WARNING
- WScript.Quit
- End If
- End Function
- '////////////////////////////////////////////////////////////////////////////////////////
- '////////////////////////////////////////////////////////////////////////////////////////
- Function WMIDateStringToDate(dtmEventDate)
- WMIDateStringToDate = CDate(Mid(dtmEventDate, 5, 2) & "/" & _
- Mid(dtmEventDate, 7, 2) & "/" & Left(dtmEventDate, 4) _
- & " " & Mid (dtmEventDate, 9, 2) & ":" & _
- Mid(dtmEventDate, 11, 2) & ":" & Mid(dtmEventDate, _
- 13, 2))
- End Function
- '////////////////////////////////////////////////////////////////////////////////////////
- '////////////////////////////////////////////////////////////////////////////////////////
- Function getDescription(strSearch,cType)
- If foundSlUi <> True Then
- If cType <> "wmi" Then
- globalPopFailure "slui.exe not found.",True
- quitExit()
- End If
- Else
- Set objScriptExec = WshShell.Exec (strSluiPath & " 0x2a " & strSearch)
- readOut = objScriptExec.StdOut.ReadAll
- quitExit()
- End If
- End Function
- '////////////////////////////////////////////////////////////////////////////////////////
- '////////////////////////////////////////////////////////////////////////////////////////
- Function checkRegRights(wmiObject,strKeyPath)
- On Error Resume next
- wmiObject.CheckAccess HKEY_LOCAL_MACHINE, strKeyPath, KEY_SET_VALUE, _
- bHasAccessRight
- If bHasAccessRight = True Then
- 'Success
- Else
- globalPopFailure MSG_NOREGRIGHTS & vbCr & MSG_ISCMD_ELEVATED,True
- End If
- End Function
- '////////////////////////////////////////////////////////////////////////////////////////
- '////////////////////////////////////////////////////////////////////////////////////////
- Function quitExit()
- Set WshShell = Nothing
- Set objFSO = Nothing
- Set objNetwork = Nothing
- Set objWMI = Nothing
- WScript.Echo MSG_SEPERATE
- WScript.Echo MSG_EXIT
- WSCript.Quit
- End Function
- '////////////////////////////////////////////////////////////////////////////////////////
- '////////////////////////////////////////////////////////////////////////////////////////
- Function verifyFileExists(file)
- If Not objFSO.FileExists(file) Then
- If file = currentDir & "slerror.xml" Then
- WScript.Echo "[" & MSG_FILENOTFOUND & file & " Unable to display error description.]"
- ElseIf file = currentDir & "ospp.htm" Then
- globalPopFailure MSG_FILENOTFOUND & vbCr & file,False
- quitExit()
- Else
- globalPopFailure MSG_FILENOTFOUND & vbCr & file,True
- End If
- End If
- End Function
- '////////////////////////////////////////////////////////////////////////////////////////
- '////////////////////////////////////////////////////////////////////////////////////////
- Function registerMof(strFile)
- For Each Drv In objFSO.Drives
- If Drv.DriveType=2 Then
- If objFSO.FileExists(Drv.DriveLetter & STR_SYS32PATH & "wbem\mofcomp.exe") Then
- foundComp = True
- strMofExePath = Drv.DriveLetter & STR_SYS32PATH & "wbem\mofcomp.exe"
- If objFSO.FileExists(Drv.DriveLetter & STR_SYS32PATH & "wbem\" & strFile) Then
- foundMof = True
- strOWmi = Drv.DriveLetter & STR_SYS32PATH & "wbem\" & strFile
- Set objScriptExec = WshShell.Exec (strMofExePath & " " & strOWmi)
- readOut = objScriptExec.StdOut.ReadAll
- WScript.Echo readOut
- quitExit()
- End If
- End If
- End If
- Next
- If foundComp <> True Then
- globalPopFailure MSG_FILENOTFOUND & Replace(STR_SYS32PATH,":","") & "wbem\mofcomp.exe",True
- Else
- If foundMof <> True Then
- globalPopFailure MSG_FILENOTFOUND & Replace(STR_SYS32PATH,":","") & "wbem\osppwmi.mof",True
- End If
- End If
- End Function
- '////////////////////////////////////////////////////////////////////////////////////////
- '////////////////////////////////////////////////////////////////////////////////////////
- Function pProcessing()
- WScript.Echo MSG_PROCESSING
- WScript.Echo MSG_SEPERATE
- End Function
- '////////////////////////////////////////////////////////////////////////////////////////
- '////////////////////////////////////////////////////////////////////////////////////////
- Function getSlui()
- For Each Drv In objFSO.Drives
- If Drv.DriveType=2 Then
- If objFSO.FileExists(Drv.DriveLetter & STR_SYS32PATH & "slui.exe") Then
- strSluiPath = Drv.DriveLetter & STR_SYS32PATH & "slui.exe"
- foundSlUi = True
- Exit For
- End If
- End If
- Next
- End Function
- '////////////////////////////////////////////////////////////////////////////////////////
- '////////////////////////////////////////////////////////////////////////////////////////
- ' Returns the encoding for a givven file.
- ' Possible return values: ascii, unicode, unicodeFFFE (big-endian), utf-8
- Function GetFileEncoding(strFileName)
- Dim strData
- Dim strEncoding
- Set oStream = CreateObject("ADODB.Stream")
- oStream.Type = 1 'adTypeBinary
- oStream.Open
- oStream.LoadFromFile(strFileName)
- ' Default encoding is ascii
- strEncoding = "ascii"
- strData = BinaryToString(oStream.Read(2))
- ' Check for little endian (x86) unicode preamble
- If (Len(strData) = 2) and strData = (Chr(255) + Chr(254)) Then
- strEncoding = "unicode"
- Else
- oStream.Position = 0
- strData = BinaryToString(oStream.Read(3))
- ' Check for utf-8 preamble
- If (Len(strData) >= 3) and strData = (Chr(239) + Chr(187) + Chr(191)) Then
- strEncoding = "utf-8"
- End If
- End If
- oStream.Close
- GetFileEncoding = strEncoding
- End Function
- '////////////////////////////////////////////////////////////////////////////////////////
- '////////////////////////////////////////////////////////////////////////////////////////
- ' Converts binary data (VT_UI1 | VT_ARRAY) to a string (BSTR)
- Function BinaryToString(dataBinary)
- Dim i
- Dim str
- For i = 1 To LenB(dataBinary)
- str = str & Chr(AscB(MidB(dataBinary, i, 1)))
- Next
- BinaryToString = str
- End Function
- '////////////////////////////////////////////////////////////////////////////////////////
- '////////////////////////////////////////////////////////////////////////////////////////
- ' Returns string containing the whole text file data.
- ' Supports ascii, unicode (little-endian) and utf-8 encoding.
- Function ReadAllTextFile(strFileName)
- Dim strData
- Set oStream = CreateObject("ADODB.Stream")
- oStream.Type = 2 'adTypeText
- oStream.Open
- oStream.Charset = GetFileEncoding(strFileName)
- oStream.LoadFromFile(strFileName)
- strData = oStream.ReadText(-1) 'adReadAll
- oStream.Close
- ReadAllTextFile = strData
- End Function
- '////////////////////////////////////////////////////////////////////////////////////////
- '////////////////////////////////////////////////////////////////////////////////////////
- Function sppErrHandle(strCommand)
- globalErr = Hex(Err.Number)
- Select Case Err.Number
- Case 0
- 'Success
- Select Case strCommand
- Case "/act","/tokact"
- WScript.Echo MSG_ACTSUCCESS
- Case "/inpkey"
- WScript.Echo MSG_KEYINSTALLSUCCESS
- quitExit()
- Case "/inslic"
- WScript.Echo MSG_INSTALLLICSUCCESS
- quitExit()
- Case "/ckms-domain","/skms-domain","/actype","/sethst","/setprt","/remhst","/stokflag","/ctokflag","/cachst"
- WScript.Echo MSG_SUCCESS
- quitExit()
- Case "/rtokil"
- WScript.Echo MSG_REMILID & UCase(strValue)
- quitExit()
- Case "/unpkey"
- WScript.Echo MSG_UNINSTALLKEYSUCCESS
- quitExit()
- Case Else
- End Select
- Case Else
- verifyFileExists currentDir & "slerror.xml"
- getResource("err" & "0x" & globalErr)
- If globalResource = "" Then
- If Len(globalErr) <> "8" Then
- WScript.Echo MSG_ERRDESC & MSG_ERRUNKNOWN
- Else
- If foundSlUi = True Then
- WScript.Echo MSG_ERRCODE & "0x" & globalErr
- WScript.Echo MSG_ERRDESC & "Run the following: cscript ospp.vbs /ddescr:0x" & globalErr
- Else
- WScript.Echo MSG_ERRCODE & "0x" & globalErr
- End If
- End If
- If strCommand <> "/act" Then
- quitExit()
- End If
- Else
- WScript.Echo MSG_ERRCODE & "0x" & globalErr
- Wscript.Echo MSG_ERRDESC & globalResource
- End If
- If strCommand = "/dtokcerts" Or strCommand = "/ignore" Then
- quitExit()
- End If
- End Select
- If globalErr = "C004F074" Then
- WScript.Echo "To view the activation event history run: cscript " & WScript.ScriptName & " /dhistorykms"
- End If
- globalResource = ""
- globalErr = ""
- Err.Clear
- End Function
- '////////////////////////////////////////////////////////////////////////////////////////
- '////////////////////////////////////////////////////////////////////////////////////////
- Function wmiErrHandle()
- Select Case Err.Number
- Case 0
- 'Successs
- Case 424
- globalPopFailure MSG_ERRCODE & Err.Number & vbCr & MSG_ERRDESC & MSG_CREDENTIALFAILURE,True
- Case Else
- If Err.Description <> "" Then
- globalPopFailure MSG_ERRCODE & Err.Number & vbCr & MSG_ERRDESC & Err.Description,True
- Else
- globalPopFailure "An error occurred while making the connection." & vbCr & MSG_ERRCODE & Err.Number,True
- End If
- End Select
- End Function
- '////////////////////////////////////////////////////////////////////////////////////////
- '////////////////////////////////////////////////////////////////////////////////////////
- Function setRegValue(wmiObject,opsValue,strValueName)
- On Error Resume Next
- Err.Clear()
- If Win7 = True Then
- strKeyPath = REG_OSPP
- Else
- strKeyPath = REG_SPP
- End If
- Select Case strValueName
- Case "UserOperations"
- wmiObject.CreateKey HKEY_LOCAL_MACHINE,strKeyPath
- wmiObject.SetDWORDValue HKEY_LOCAL_MACHINE,_
- strKeyPath,strValueName,opsValue
- Case Else
- End Select
- wmiErrHandle()
- WScript.Echo MSG_SUCCESS
- quitExit()
- End Function
- '////////////////////////////////////////////////////////////////////////////////////////
- '////////////////////////////////////////////////////////////////////////////////////////
- Function getResource(resource)
- On Error Resume Next
- Set xmlDoc = CreateObject("Msxml2.DOMDocument.6.0")
- xmlDoc.load(currentDir & "slerror.xml")
- Set ElemList = xmlDoc.getElementsByTagName(resource)
- resValue = ElemList.item(0).text
- globalResource = resValue
- End Function
- '////////////////////////////////////////////////////////////////////////////////////////
- '////////////////////////////////////////////////////////////////////////////////////////
- Function globalPopSuccess(strSuccess,boolQuit)
- If boolQuit = True Then
- WshShell.Popup strSuccess,,WScript.ScriptName, wshOK + VALUE_ICON_INFORMATION
- quitExit()
- Else
- WshShell.Popup strSuccess,,WScript.ScriptName, wshOK + VALUE_ICON_INFORMATION
- End If
- End Function
- '////////////////////////////////////////////////////////////////////////////////////////
- '////////////////////////////////////////////////////////////////////////////////////////
- Function globalPopFailure(strFailure,boolQuit)
- If boolQuit = True Then
- WshShell.Popup strFailure,,WScript.ScriptName, wshOK + VALUE_ICON_WARNING
- quitExit()
- Else
- WshShell.Popup strFailure,,WScript.ScriptName, wshOK + VALUE_ICON_WARNING
- End If
- End Function
- '////////////////////////////////////////////////////////////////////////////////////////
- '////////////////////////////////////////////////////////////////////////////////////////
- Function connectWMI(strMachine,strUser,strPassword,ctype)
- On Error Resume Next
- If ctype = "" Then
- If strMachine = "" Or LCase(strMachine) = LCase(strLocal) Then
- Set objWMI = GetObject("winmgmts:" _
- & "{impersonationLevel=impersonate}!\\" & "." & "\root\cimv2")
- Else
- If strUser = "" And strPassword = "" Then
- Set objWMI = GetObject("winmgmts:" _
- & "{impersonationLevel=impersonate}!\\" & strMachine & "\root\cimv2")
- Else
- Set objSWbemLocator = CreateObject("WbemScripting.SWbemLocator")
- Set objWMI = objSWbemLocator.ConnectServer _
- (strMachine, "\root\cimv2", strUser, strPassword)
- wmiErr = CStr(Hex(Err.Number))
- If Len(wmiErr) = "8" Then
- getDescription "0x" & wmiErr,"wmi"
- End If
- objWMI.Security_.ImpersonationLevel = 3
- End If
- End If
- Else
- If strUser <> "" Then
- globalPopFailure MSG_CREDENTIALERR,True
- End If
- If strMachine = "" Or LCase(strMachine) = LCase(strLocal) Then
- Set objWMI1 = GetObject("winmgmts:" _
- & "{impersonationLevel=impersonate}!\\" & "." & "\root\default:StdRegProv")
- Set objWMI = GetObject("winmgmts:" _
- & "{impersonationLevel=impersonate}!\\" & "." & "\root\cimv2")
- Else
- Set objWMI1 = GetObject("winmgmts:" _
- & "{impersonationLevel=impersonate}!\\" & strMachine & "\root\default:StdRegProv")
- Set objWMI = GetObject("winmgmts:" _
- & "{impersonationLevel=impersonate}!\\" & strMachine & "\root\cimv2")
- End If
- End If
- wmiErrHandle()
- isWin7OS()
- End Function
- '////////////////////////////////////////////////////////////////////////////////////////
- '////////////////////////////////////////////////////////////////////////////////////////
- Private Function TkaGetSigner()
- On Error Resume Next
- If Win7 = True Then
- Set TkaGetSigner = WScript.CreateObject("OSPPWMI.OSppWmiTokenActivationSigner")
- Else
- Set TkaGetSigner = WScript.CreateObject("SPPWMI.SppWmiTokenActivationSigner")
- End If
- If Hex(Err.Number) = "80020009" Then
- globalPopFailure MSG_ERRCODE & "0x" & Hex(Err.Number) & vbCr & MSG_ERRDESC & Err.Description,True
- End If
- End Function
- '////////////////////////////////////////////////////////////////////////////////////////
- '////////////////////////////////////////////////////////////////////////////////////////
- Function TkaPrintCertificate(strThumbprint)
- arrParams = Split(strThumbprint, "|")
- WScript.Echo "Thumbprint: " & arrParams(0)
- WScript.Echo "Subject: " & arrParams(1)
- WScript.Echo "Issuer: " & arrParams(2)
- vf = FormatDateTime(CDate(arrParams(3)), vbShortDate)
- WScript.Echo "Valid From: " & vf
- vt = FormatDateTime(CDate(arrParams(4)), vbShortDate)
- WScript.Echo "Valid To: " & vt
- WScript.Echo MSG_SEPERATE
- End Function
- '////////////////////////////////////////////////////////////////////////////////////////
- '////////////////////////////////////////////////////////////////////////////////////////
- Function ExecuteQuery(strSelect,strWhere,strClass)
- Err.Clear
- If strWhere = "" Then
- Set productinstances = objWMI.ExecQuery("SELECT " & strSelect & " FROM " & strClass)
- Else
- Set productinstances = objWMI.ExecQuery("SELECT " & strSelect & " FROM " & strClass & " WHERE " & strWhere)
- End If
- sppErrHandle ""
- End Function
- '////////////////////////////////////////////////////////////////////////////////////////
- '////////////////////////////////////////////////////////////////////////////////////////
- Function performLicAction(strCommand,strValue,strMachine)
- On Error Resume Next
- If strCommand = "/dhistorykms" Or strCommand = "/dhistoryacterr" Then
- verifyFileExists currentDir & "slerror.xml"
- If strCommand = "/dhistorykms" Then
- '12288 = KMS Activation event id
- eventCode = "12288"
- strSrcEvents = MSG_SEARCHEVENTSKMS
- strNoEvents = MSG_NOEVENTSSKMS
- Else
- '8200 = Internet Activation event id
- eventCode = "8200"
- strSrcEvents = MSG_SEARCHEVENTSRET
- strNoEvents = MSG_NOEVENTSRET
- End If
- If strMachine <> "" Then
- WScript.Echo strSrcEvents & strMachine
- Else
- WScript.Echo strSrcEvents & strLocal
- End If
- WScript.Echo "Event ID: " & eventCode
- WScript.Echo vbCr
- Set objEvents = objWMI.ExecQuery _
- ("Select * from Win32_NTLogEvent Where Logfile = 'Application' and " _
- & "EventCode = '" & eventCode & "'")
- If objEvents.Count > 0 Then
- For each objEvent in objEvents
- If strCommand = "/dhistoryacterr" Then
- i = i + 1
- dtmEventDate = objEvent.TimeWritten
- strTimeWritten = WMIDateStringToDate(dtmEventDate)
- WScript.Echo "Coordinated Universal Time Written: " & strTimeWritten
- strReplCrs = Replace(objEvent.Message,vbCrLf,"")
- WScript.Echo "MESSAGE: " & strReplCrs
- strhr10 = Right(strReplCrs,10)
- getResource("err" & strhr10)
- If globalResource = "" Then
- If foundSlUi = True Then
- WScript.Echo MSG_ERRDESC & "Run the following: cscript ospp.vbs /ddescr:" & strhr10
- Else
- WScript.Echo MSG_ERRDESC & "Not available."
- End If
- Else
- Wscript.Echo MSG_ERRDESC & globalResource
- End If
- WScript.Echo MSG_SEPERATE
- Else
- strhr10 = Mid(objEvent.Message,90,10)
- strReplCrs = Replace(objEvent.Message,vbCrLf,"")
- If Right(strReplCrs,2) = " 5" Then
- strReplStrs = Replace(strReplCrs,"The client has sent an activation request to the key management service machine.Info:","")
- dtmEventDate = objEvent.TimeWritten
- strTimeWritten = WMIDateStringToDate(dtmEventDate)
- WScript.Echo "Coordinated Universal Time Written: " & strTimeWritten
- intColon = InStr(strReplStrs,":")
- strErrHost = Left(strReplStrs,intColon)
- strErrHost = Trim(strErrHost)
- strErrHost = Replace(strErrHost,":","")
- WScript.Echo "ERROR/HOST: " & strErrHost
- Select Case strhr10
- Case "0x00000000"
- WScript.Echo MSG_ERRDESC & "N/A"
- Case Else
- getResource("err" & strhr10)
- If globalResource = "" Then
- If foundSlUi = True Then
- WScript.Echo MSG_ERRDESC & "Run the following: cscript ospp.vbs /ddescr:" & strhr10
- Else
- WScript.Echo MSG_ERRDESC & "Not available."
- End If
- Else
- Wscript.Echo MSG_ERRDESC & globalResource
- End If
- End Select
- WScript.Echo MSG_SEPERATE
- End If
- End If
- Next
- Else
- WScript.Echo MSG_SEPERATE
- If strMachine <> "" Then
- WScript.Echo strNoEvents & strMachine
- Else
- WScript.Echo strNoEvents & strLocal
- End If
- WScript.Echo MSG_SEPERATE
- End If
- quitExit()
- End If
- 'Verify osppsvc service is installed for win7 case
- If Win7 = True Then
- Set colListOfServices = objWMI.ExecQuery _
- ("Select * from Win32_Service ")
- For Each objService in colListOfServices
- If objService.Name = "osppsvc" Then
- installed = True
- Exit For
- End If
- Next
- If installed <> True Then
- globalPopFailure MSG_OSPPSVC_NOINSTALL,True
- End If
- End If
- Select Case strCommand
- 'The following operations are performed @ a service level
- Case "/inpkey", "/dcmid", "/inslic", "/cachst", "/stokflag", "/ctokflag", "/dstatus", "/dstatusall"
- If Win7 = True Then
- For Each objService in objWMI.InstancesOf("OfficeSoftwareProtectionService")
- Set objOspp = objService
- Exit For
- Next
- Else
- 'Win8 and beyond
- For Each objService in objWMI.InstancesOf("SoftwareLicensingService")
- Set objOspp = objService
- Exit For
- Next
- End If
- Case Else
- End Select
- sppErrHandle ""
- If strCommand = "/inpkey" Then
- i = i + 1
- Err.Clear
- objOspp.InstallProductKey(strValue)
- sppErrHandle(strCommand)
- ElseIf strCommand = "/cachst" Then
- i = i + 1
- If strValue = "true" Then
- objOspp.DisableKeyManagementServiceHostCaching(False)
- sppErrHandle(strCommand)
- ElseIf strValue = "false" Then
- objOspp.DisableKeyManagementServiceHostCaching(True)
- sppErrHandle(strCommand)
- Else
- globalPopFailure MSG_UNSUPPORTED & " A TRUE or FALSE value is required for: " & strCommand,True
- End If
- ElseIf strCommand = "/dcmid" Then
- If objOspp.ClientMachineID <> "" Or objOspp.ClientMachineID <> Null Then
- WScript.Echo MSG_CMID & objOspp.ClientMachineID
- Else
- WScript.Echo MSG_CMID & "Not found."
- End If
- quitExit()
- ElseIf strCommand = "/inslic" Then
- i = i + 1
- If Right(strValue,7) = ".xrm-ms" Then
- verifyFileExists strValue
- WScript.Echo MSG_INSTALLLICENSE & strValue
- Else
- globalPopFailure MSG_UNRECOGFILE,True
- End If
- LicenseData = ReadAllTextFile(strValue)
- objOSpp.InstallLicense(LicenseData)
- SppErrHandle(strCommand)
- ElseIf strCommand = "/stokflag" Then
- i = i + 1
- If Win7 = True Then
- objOspp.DisableKeyManagementServiceActivation(True)
- sppErrHandle(strCommand)
- Else
- 'Unsupported - osppsvc only supports this.
- globalPopFailure MSG_UNSUPPORTEDOPEROS7 & vbCr & strCommand,True
- End If
- ElseIf strCommand = "/ctokflag" Then
- i = i + 1
- If Win7 = True Then
- objOspp.DisableKeyManagementServiceActivation(False)
- SppErrHandle(strCommand)
- Else
- 'Unsupported - osppsvc only supports this.
- globalPopFailure MSG_UNSUPPORTEDOPEROS7 & vbCr & strCommand,True
- End If
- ElseIf strCommand = "/dtokils" Then
- Err.Clear
- Set objWmiDate = CreateObject("WBemScripting.SWbemDateTime")
- ExecuteQuery "ILID, ILVID, AuthorizationStatus, ExpirationDate, Description, AdditionalInfo","",tokenClass
- For Each instance in productinstances
- sppErrHandle ""
- i = i + 1
- WScript.Echo "License ID (ILID): " & instance.ILID
- WScript.Echo "Version ID (ILvID): " & instance.ILVID
- If Not IsNull(instance.ExpirationDate) Then
- objWmiDate.Value = instance.ExpirationDate
- If (objWmiDate.GetFileTime(false) <> 0) Then
- WScript.Echo "Expiry Date: " & objWmiDate.GetVarDate
- End If
- End If
- If Not IsNull(instance.AdditionalInfo) Then
- WScript.Echo "Additional Info: " & instance.AdditionalInfo
- End If
- If Not IsNull(instance.AuthorizationStatus) And instance.AuthorizationStatus <> 0 Then
- globalErr = CStr(Hex(instance.AuthorizationStatus))
- WScript.Echo MSG_AUTHERR & globalErr
- quitExit()
- Else
- WScript.Echo "Description: " & instance.Description
- End If
- WScript.Echo MSG_SEPERATE
- Next
- If i = 0 Then
- WScript.Echo MSG_NOLICENSEFOUND
- End If
- quitExit()
- ElseIf strCommand = "/rtokil" Then
- Err.Clear
- ExecuteQuery "ILID, ID","",tokenClass
- For Each instance in productinstances
- sppErrHandle ""
- i = i + 1
- If LCase(strValue) = LCase(instance.ILID) Then
- instance.Uninstall
- SppErrHandle(strCommand)
- Else
- WScript.Echo MSG_NOTFOUNDILID & strValue & " Run /dtokils to display the ILID for installed licenses."
- End If
- Next
- If i = 0 Then
- WScript.Echo MSG_NOLICENSEFOUND
- End If
- quitExit()
- ElseIf strCommand = "/dtokcerts" Then
- Err.Clear
- Set objSigner = TkaGetSigner()
- sppErrHandle(strCommand)
- ExecuteQuery "ID, Name, ApplicationId, PartialProductKey, Description, LicenseIsAddon ","ApplicationId = '" & OfficeAppId & "' " & "AND PartialProductKey <> NULL " & "AND LicenseIsAddon = FALSE",productClass
- For each instance in productinstances
- i = i + 1
- sppErrHandle ""
- iRet = instance.GetTokenActivationGrants(arrGrants)
- If Err.Number = 0 Then
- arrThumbprints = objSigner.GetCertificateThumbprints(arrGrants)
- If Err.Number = 0 Then
- For Each strThumbprint in arrThumbprints
- TkaPrintCertificate strThumbprint
- Next
- Else
- sppErrHandle ""
- End If
- Else
- sppErrHandle ""
- End If
- WScript.Echo MSG_SEPERATE
- Err.Clear
- Next
- ElseIf strCommand = "/tokact" Then
- Err.Clear
- Set objSigner = TkaGetSigner()
- sppErrHandle "/ignore"
- pos1 = InStr(strValue,":")
- If pos1 = 0 Then
- 'PIN not passed
- strThumbprint = strValue
- Else
- 'PIN passed
- strThumbprint = Left(strValue,pos1 - 1)
- strPin = Replace(strValue,strThumbprint & ":","")
- End If
- ExecuteQuery "ID, Name, ApplicationId, PartialProductKey, Description, LicenseIsAddon ","ApplicationId = '" & OfficeAppId & "' " & "AND PartialProductKey <> NULL " & "AND LicenseIsAddon = FALSE",productClass
- For each instance in productinstances
- i = i + 1
- sppErrHandle ""
- WScript.Echo MSG_TOKACTATTEMPT
- WScript.Echo MSG_SKUID & instance.ID
- WScript.Echo MSG_LICENSENAME & instance.Name
- WScript.Echo MSG_DESCRIPTION & instance.Description
- WScript.Echo MSG_PARTIALKEY & instance.PartialProductKey
- iRet = instance.GenerateTokenActivationChallenge(strChallenge)
- If Err.Number = 0 Then
- strAuthInfo1 = objSigner.Sign(strChallenge, strThumbprint, strPin, strAuthInfo2)
- If Err.Number = 0 Then
- iRet = instance.DepositTokenActivationResponse(strChallenge, strAuthInfo1, strAuthInfo2)
- SppErrHandle(strCommand)
- Else
- sppErrHandle ""
- End If
- Else
- sppErrHandle ""
- End If
- WScript.Echo MSG_SEPERATE
- Next
- Else
- Err.Clear
- If strCommand = "/dstatus" Or strCommand = "/dstatusall" Then
- If Win7 = True Then
- ExecuteQuery "ID, ApplicationId, EvaluationEndDate, PartialProductKey, Description, Name, LicenseStatus, LicenseStatusReason, ProductKeyID, GracePeriodRemaining, DiscoveredKeyManagementServiceMachineName, DiscoveredKeyManagementServiceMachinePort, VLActivationInterval, VLRenewalInterval, KeyManagementServiceMachine, KeyManagementServicePort","ApplicationId = '" & OfficeAppId & "' ",productClass
- Else
- ExecuteQuery "ID, ApplicationId, EvaluationEndDate, PartialProductKey, Description, Name, LicenseStatus, LicenseStatusReason, ProductKeyID, GracePeriodRemaining, KeyManagementServiceLookupDomain, VLActivationType, ADActivationObjectName, ADActivationObjectDN, ADActivationCsvlkPid, ADActivationCsvlkSkuId, VLActivationTypeEnabled, DiscoveredKeyManagementServiceMachineName, DiscoveredKeyManagementServiceMachinePort, VLActivationInterval, VLRenewalInterval, KeyManagementServiceMachine, KeyManagementServicePort","ApplicationId = '" & OfficeAppId & "' ",productClass
- End If
- ElseIf strCommand = "/act" Then
- ExecuteQuery "ID, ApplicationId, PartialProductKey, Description, Name","ApplicationId = '" & OfficeAppId & "' " & "AND PartialProductKey <> NULL ",productClass
- ElseIf strCommand = "/unpkey" Then
- ExecuteQuery "ID, ApplicationId, Description, PartialProductKey, Name, ProductKeyID","ApplicationId = '" & OfficeAppId & "' " & "AND PartialProductKey <> NULL ",productClass
- ElseIf strCommand = "/dinstid" Or strCommand = "/actcid" Then
- ExecuteQuery "ID, ApplicationId, Description, PartialProductKey, Name, OfflineInstallationId","ApplicationId = '" & OfficeAppId & "' " & "AND PartialProductKey <> NULL ",productClass
- ElseIf strCommand = "/actype" Or strCommand = "/skms-domain" Or strCommand = "/ckms-domain" Then
- If Win7 = True Then
- 'Unsupported - sppsvc only supports this.
- globalPopFailure MSG_UNSUPPORTEDOPEROS8 & vbCr & strCommand,True
- Else
- ExecuteQuery "ID, Description, PartialProductKey, ApplicationId ","ApplicationId = '" & OfficeAppId & "' ",productClass
- End If
- ElseIf strCommand = "/sethst" Or strCommand = "/setprt" Or strCommand = "/remhst" Then
- ExecuteQuery "ID, Description, PartialProductKey, ApplicationId ","ApplicationId = '" & OfficeAppId & "' ",productClass
- End If
- For Each instance in productinstances
- sppErrHandle ""
- If (LCase(instance.ApplicationId) = OfficeAppId) Then
- If instance.PartialProductKey <> "" Then
- i = i + 1
- End If
- intIsKms = InStr(UCase(instance.Description),"KMS")
- If intIsKms <> 0 Then
- kmsCounter = kmsCounter + 1
- End If
- Select Case strCommand
- Case "/actype"
- Select Case strValue
- Case "0","1","2","3"
- Case Else
- globalPopFailure MSG_UNSUPPORTED & " A value of" & vbCr & _
- "0 (for all)" & vbCr & "1 (for AD)" & vbCr & "2 (for KMS" & vbCr & _
- "3 (for Token)" & vbCr & "Is required for: " & strCommand,True
- End Select
- If intIsKms <> 0 Then
- If strValue <> 0 Then
- instance.SetVLActivationTypeEnabled(strValue)
- Else
- instance.ClearVLActivationTypeEnabled()
- End If
- End If
- sppErrHandle ""
- Case "/skms-domain"
- If intIsKms <> 0 Then
- instance.SetKeyManagementServiceLookupDomain(strValue)
- End If
- sppErrHandle ""
- Case "/ckms-domain"
- If intIsKms <> 0 Then
- instance.ClearKeyManagementServiceLookupDomain()
- End If
- sppErrHandle ""
- Case "/sethst"
- If intIsKms <> 0 Then
- instance.SetKeyManagementServiceMachine(strValue)
- End If
- sppErrHandle ""
- Case "/setprt"
- If intIsKms <> 0 Then
- instance.SetKeyManagementServicePort(strValue)
- End If
- sppErrHandle ""
- Case "/remhst"
- If intIsKms <> 0 Then
- instance.ClearKeyManagementServiceMachine()
- sppErrHandle ""
- instance.ClearKeyManagementServicePort()
- sppErrHandle ""
- End If
- Case "/act"
- WScript.Echo MSG_ACTATTEMPT
- WScript.Echo MSG_SKUID & instance.ID
- WScript.Echo MSG_LICENSENAME & instance.Name
- WScript.Echo MSG_DESCRIPTION & instance.Description
- WScript.Echo MSG_PARTIALKEY & instance.PartialProductKey
- instance.Activate
- SppErrHandle(strCommand)
- WScript.Echo MSG_SEPERATE
- Case "/unpkey"
- If Len(strValue) <> "5" Then
- globalPopFailure MSG_ERRPARTIALKEY,True
- End If
- If UCase(strValue) = instance.PartialProductKey Then
- y = y + 1
- WScript.Echo MSG_UNINSTALLKEY & instance.Name
- instance.UninstallProductKey(instance.ProductKeyID)
- SppErrHandle(strCommand)
- End If
- Case "/dinstid"
- WScript.Echo "Installation ID for: " & instance.Name & ": " & instance.OfflineInstallationId
- WScript.Echo MSG_SEPERATE
- Case "/actcid"
- instance.DepositOfflineConfirmationId instance.OfflineInstallationId, strValue
- If Err.Number = 0 Then
- If telsuccess <> True Then
- WScript.Echo MSG_LICENSENAME & instance.Name
- WScript.Echo MSG_OFFLINEACTSUCCESS
- telsuccess = True
- End If
- Else
- WScript.Echo MSG_LICENSENAME & instance.Name
- sppErrHandle ""
- End If
- WScript.Echo MSG_SEPERATE
- Case "/dstatus", "/dstatusall"
- getInstalled = False
- verifyFileExists currentDir & "slerror.xml"
- licSr = Hex(instance.LicenseStatusReason)
- If strCommand = "/dstatusall" Then
- getInstalled = True
- WScript.Echo MSG_SKUID & instance.ID
- WScript.Echo MSG_LICENSENAME & instance.Name
- WScript.Echo MSG_DESCRIPTION & instance.Description
- Else
- If instance.ProductKeyID <> "" Then
- getInstalled = True
- WScript.Echo MSG_SKUID & instance.ID
- WScript.Echo MSG_LICENSENAME & instance.Name
- WScript.Echo MSG_DESCRIPTION & instance.Description
- 'EvaluationEndDate always returns a value. When an expiry date is not defined "1/1/1601" is returned.
- 'So avoid displaying this against RTM licenses as that date = no expiry defined.
- If instance.EvaluationEndDate <> "" Then
- Set objDate = CreateObject("WBemScripting.SWbemDateTime")
- objDate.Value = instance.EvaluationEndDate
- If objDate.GetVarDate() <> "1/1/1601" Then
- WScript.Echo MSG_LICEXPIRY & objDate.GetVarDate()
- End If
- Set objDate = Nothing
- End If
- End If
- End If
- If getInstalled = True Then
- Select Case instance.LicenseStatus
- Case 0
- WScript.Echo MSG_LICSTATUS & MSG_UNLICENSED
- Case 1
- WScript.Echo MSG_LICSTATUS & MSG_LICENSED
- Case 2
- WScript.Echo MSG_LICSTATUS & MSG_OOBGRACE
- Case 3
- WScript.Echo MSG_LICSTATUS & MSG_OOTGRACE
- Case 4
- WScript.Echo MSG_LICSTATUS & MSG_NONGENGRACE
- Case 5
- WScript.Echo MSG_LICSTATUS & MSG_NOTIFICATION
- Case 6
- WScript.Echo MSG_LICSTATUS & MSG_EXTENDEDGRACE
- Case Else
- WScript.Echo MSG_LICSTATUS & MSG_LICUNKNOWN
- End Select
- If licSr <> "0" Then
- If instance.LicenseStatus <> 1 Then
- WScript.Echo MSG_ERRCODE & "0x" & licSr
- Else
- WScript.Echo MSG_ERRCODE & "0x" & licSr & MSG_INFO_ONLY
- End If
- getResource("err" & "0x" & licSr)
- If globalResource = "" Then
- If foundSlUi <> True Then
- WScript.Echo MSG_ERRDESC & "Not available."
- Else
- WScript.Echo MSG_ERRDESC & "Run the following: cscript ospp.vbs /ddescr:0x" & licSr
- End if
- Else
- WScript.Echo MSG_ERRDESC & globalResource
- End If
- End If
- If instance.GracePeriodRemaining <> 0 Then
- dGrace = instance.GracePeriodRemaining / 60 / 24
- rndDown = Int(dGrace)
- WScript.Echo MSG_REMAINGRACE & rndDown & " days " & " (" & instance.GracePeriodRemaining & " minute(s) before expiring" & ")"
- End If
- If instance.PartialProductKey <> "" Then
- WScript.Echo MSG_PARTIALKEY & instance.PartialProductKey
- 'Display additional volume info for KMS licenses
- If intIsKms <> 0 Then
- 'Display activation type set (Win8+).
- If Win7 <> True Then
- Select Case instance.VLActivationTypeEnabled
- Case 1
- WScript.Echo MSG_VLActivationType & "AD"
- Case 2
- WScript.Echo MSG_VLActivationType & "KMS"
- Case 3
- WScript.Echo MSG_VLActivationType & "Token"
- Case Else
- WScript.Echo MSG_VLActivationType & "ALL"
- End Select
- 'Check to see if last activated via AD- display object info (Win8+).
- If instance.VLActivationType = 1 Then
- isAdActivated = True
- WScript.Echo MSG_Act_Recent + "AD"
- WScript.Echo vbTab & MSG_ADInfoAOName & instance.ADActivationObjectName
- WScript.Echo vbTab & MSG_ADInfoAODN & instance.ADActivationObjectDN
- WScript.Echo vbTab & MSG_ADInfoExtendedPid & instance.ADActivationCsvlkPid
- WScript.Echo vbTab & MSG_ADInfoActID & instance.ADActivationCsvlkSkuId
- End If
- End If
- If isAdActivated = False Then
- strKms = instance.DiscoveredKeyManagementServiceMachineName
- strPort = instance.DiscoveredKeyManagementServiceMachinePort
- If IsNull(strKms) Or (strKms = "") Or IsNull(strPort) Or (strPort = 0) Then
- WScript.Echo vbTab & MSG_KMS_DNS_ERR
- Else
- WScript.Echo vbTab & MSG_KMS_DNS & strKMS & ":" & strPort
- End If
- 'Check to see if registry override is defined
- strKms = instance.KeyManagementServiceMachine
- If strKms <> "" And Not IsNull(strKms) Then
- strPort = instance.KeyManagementServicePort
- If (strPort = 0) Then
- strPort = MSG_DEFAULT_PORT
- End If
- WScript.Echo vbTab & MSG_HOST_REG_OVERRIDE & strKms & ":" & strPort
- End If
- WScript.Echo vbTab & MSG_ACTIVATION_INTERVAL & instance.VLActivationInterval & " minutes"
- WScript.Echo vbTab & MSG_RENEWAL_INTERVAL & instance.VLRenewalInterval & " minutes"
- If (objOspp.KeyManagementServiceHostCaching = True) Then
- WScript.Echo vbTab & MSG_HOST_CACHING & "Enabled"
- Else
- WScript.Echo vbTab & MSG_HOST_CACHING & "Disabled"
- End If
- If Win7 <> True Then
- If instance.KeyManagementServiceLookupDomain <> "" Then
- WScript.Echo vbTab & MSG_KMSLOOKUP & instance.KeyManagementServiceLookupDomain
- End If
- End If
- End If
- End If
- End If
- WScript.Echo MSG_SEPERATE
- End If
- Case Else
- End Select
- End If
- Next
- End If
- Select Case strCommand
- Case "/unpkey"
- If y = 0 Then
- WScript.Echo MSG_KEYNOTFOUND
- quitExit()
- End If
- Case "/ckms-domain","/skms-domain","/actype","/sethst","/setprt","/remhst"
- If kmsCounter = 0 Then
- WScript.Echo MSG_NOKMSLICS
- quitExit()
- Else
- sppErrHandle(strCommand)
- End If
- Case Else
- End Select
- If i = 0 Then
- WScript.Echo MSG_NOKEYSINSTALLED
- WScript.Echo MSG_SEPERATE
- End If
- quitExit()
- End Function
- '////////////////////////////////////////////////////////////////////////////////////////
- '////////////////////////////////////////////////////////////////////////////////////////
- Function performRegAction(strCommand)
- On Error Resume Next
- If Win7 = True Then
- Set colListOfServices = objWMI.ExecQuery _
- ("Select * from Win32_Service ")
- For Each objService in colListOfServices
- If objService.Name = "osppsvc" Then
- installed = True
- Exit For
- End If
- Next
- If installed <> True Then
- globalPopFailure MSG_OSPPSVC_NOINSTALL,True
- End If
- checkRegRights objWMI1,REG_OSPP
- Else
- checkRegRights objWMI1,REG_SPP
- End If
- Select Case strCommand
- Case "/puserops"
- setRegValue objWMI1,"1","UserOperations"
- Case "/duserops"
- setRegValue objWMI1,"0","UserOperations"
- End Select
- End Function
- '////////////////////////////////////////////////////////////////////////////////////////
- '////////////////////////////////////////////////////////////////////////////////////////
- Function performServiceAction(strCommand)
- On Error Resume Next
- Set colListOfServices = objWMI.ExecQuery _
- ("Select * from Win32_Service ")
- For Each objService in colListOfServices
- If objService.Name = "osppsvc" Then
- installed = True
- Exit For
- End If
- Next
- If installed <> True Then
- globalPopFailure MSG_OSPPSVC_NOINSTALL,True
- End If
- Set objService = Nothing
- Set colListOfServices = Nothing
- If strCommand = "/osppsvcauto" Then
- Set colListOfServices = objWMI.ExecQuery _
- ("Select * from Win32_Service where StartMode = 'Manual' or StartMode = 'Disabled'")
- For Each objService in colListOfServices
- If LCase(objService.Name) = "osppsvc" Then
- foundOsppNonAuto = True
- objService.Change , , , , "Automatic"
- WScript.Sleep(15000)
- Exit For
- End If
- Next
- If foundOsppNonAuto <> True Then
- WScript.Echo "Service startup type already set to automatic: Office Software Protection Platform"
- quitExit()
- End If
- Set objService = Nothing
- Set colListOfServices = Nothing
- Set colListOfServices = objWMI.ExecQuery _
- ("Select * from Win32_Service where StartMode = 'Auto'")
- For Each objService in colListOfServices
- If LCase(objService.Name) = "osppsvc" Then
- foundOsppAuto = True
- WScript.Echo "Successfully set service startup to automatic:" & objService.DisplayName
- quitExit()
- End If
- Next
- If foundOsppAuto <> True Then
- WScript.Echo "Unsuccessful setting service startup to automatic. " & MSG_ISCMD_ELEVATED
- quitExit()
- End If
- Else
- Set colListOfServices = objWMI.ExecQuery _
- ("Select * from Win32_Service ")
- For Each objService in colListOfServices
- If LCase(objService.Name) = "osppsvc" Then
- Select Case LCase(objService.State)
- Case "running"
- objService.StopService()
- WScript.Sleep(15000)
- objService.StartService()
- WScript.Sleep(15000)
- Case Else
- objService.StartService()
- WScript.Sleep(15000)
- End Select
- Exit For
- End If
- Next
- Set objService = Nothing
- Set colListOfServices = Nothing
- Set colListOfServices = objWMI.ExecQuery _
- ("Select * from Win32_Service ")
- For Each objService in colListOfServices
- If LCase(objService.Name) = "osppsvc" Then
- If LCase(objService.State) = "running" Then
- WScript.Echo "Successfully restarted: " & objService.DisplayName
- quitExit()
- Else
- WScript.Echo "Unsuccessful restart: " & objService.DisplayName & ". Status: " _
- & objService.State & ". " & MSG_ISCMD_ELEVATED
- quitExit()
- End If
- Exit For
- End If
- Next
- End If
- End Function
- '////////////////////////////////////////////////////////////////////////////////////////
- '////////////////////////////////////////////////////////////////////////////////////////
- Function reARM(skuid)
- progFiles = WshShell.ExpandEnvironmentStrings("%ProgramFiles%")
- If objFSO.FileExists(progFiles & STR_OSPPREARMPATH) Then
- rearmPath = progFiles & STR_OSPPREARMPATH
- ElseIf objFSO.FileExists(progFiles & STR_OSPPREARMPATH_DEBUG) Then
- rearmPath = progFiles & STR_OSPPREARMPATH_DEBUG
- Else
- progFilesX86 = WshShell.ExpandEnvironmentStrings("%ProgramFiles(x86)%")
- If objFSO.FileExists(progFilesX86 & STR_OSPPREARMPATH) Then
- rearmPath = progFilesX86 & STR_OSPPREARMPATH
- ElseIf objFSO.FileExists(progFilesX86 & STR_OSPPREARMPATH_DEBUG) Then
- rearmPath = progFilesX86 & STR_OSPPREARMPATH_DEBUG
- Else
- WScript.Echo MSG_FILENOTFOUND & "OSPPREARM.EXE"
- quitExit()
- End If
- End If
- If skuid = "" Then
- Set objScriptExec = WshShell.Exec (rearmPath)
- Else
- Set objScriptExec = WshShell.Exec (rearmPath & " " & skuid)
- End If
- readOut = objScriptExec.StdOut.ReadAll
- WScript.Echo readOut
- End Function
- '////////////////////////////////////////////////////////////////////////////////////////
- '////////////////////////////////////////////////////////////////////////////////////////
- Function isWin7OS()
- Set colOperatingSystems = objWMI.ExecQuery _
- ("Select * from Win32_OperatingSystem")
- For Each objOperatingSystem in colOperatingSystems
- Ver = Split(objOperatingSystem.Version, ".", -1, 1)
- 'Win7
- If (Ver(0) = "6" And Ver(1) = "1" And objOperatingSystem.ProductType = 1) Then
- Win7 = True
- Exit For
- End If
- 'Server2008R2
- If (Ver(0) = "6" And Ver(1) = "1" And (objOperatingSystem.ProductType = 2 Or objOperatingSystem.ProductType = 3)) Then
- Win7 = True
- Exit For
- End If
- Next
- setWmiClasses()
- End Function
- '////////////////////////////////////////////////////////////////////////////////////////
- '////////////////////////////////////////////////////////////////////////////////////////
- Function setWmiClasses()
- If Win7 = True Then
- productClass = "OfficeSoftwareProtectionProduct"
- tokenClass = "OfficeSoftwareProtectionTokenActivationLicense"
- Else
- productClass = "SoftwareLicensingProduct"
- tokenClass = "SoftwareLicensingTokenActivationLicense"
- End If
- End Function
- '////////////////////////////////////////////////////////////////////////////////////////
- '////////////////////////////////////////////////////////////////////////////////////////
- '' SIG '' Begin signature block
- '' SIG '' MIIhkgYJKoZIhvcNAQcCoIIhgzCCIX8CAQExDzANBglg
- '' SIG '' hkgBZQMEAgEFADB3BgorBgEEAYI3AgEEoGkwZzAyBgor
- '' SIG '' BgEEAYI3AgEeMCQCAQEEEE7wKRaZJ7VNj+Ws4Q8X66sC
- '' SIG '' AQACAQACAQACAQACAQAwMTANBglghkgBZQMEAgEFAAQg
- '' SIG '' zEwik1Z5edAj7+sqHGDiJNmSFwExtnAcWrZywByYrk+g
- '' SIG '' ggswMIIEuDCCA6CgAwIBAgITMwAAABYRBLSIOIy+wwAA
- '' SIG '' AAAAFjANBgkqhkiG9w0BAQsFADB+MQswCQYDVQQGEwJV
- '' SIG '' UzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMH
- '' SIG '' UmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBv
- '' SIG '' cmF0aW9uMSgwJgYDVQQDEx9NaWNyb3NvZnQgQ29kZSBT
- '' SIG '' aWduaW5nIFBDQSAyMDEwMB4XDTEyMDgzMDE3NDkwM1oX
- '' SIG '' DTEzMTEzMDE3NDkwM1owgYMxCzAJBgNVBAYTAlVTMRMw
- '' SIG '' EQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRt
- '' SIG '' b25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRp
- '' SIG '' b24xDTALBgNVBAsTBE1PUFIxHjAcBgNVBAMTFU1pY3Jv
- '' SIG '' c29mdCBDb3Jwb3JhdGlvbjCCASIwDQYJKoZIhvcNAQEB
- '' SIG '' BQADggEPADCCAQoCggEBAKBQnx1OlLoHCty+lknhPaAG
- '' SIG '' 75W++b1WKluc7x4RLsbW4S2yb8wzLZ4epLGCFspkMamK
- '' SIG '' JoH04y7yHg4cyOFZ4dQjPWV3/+rlt7ONCPYS129JV6SF
- '' SIG '' 4wQe0EKop7LbMAoV0ck1bX+8hl6lPraQZAUkHD6gcWgK
- '' SIG '' Mfd+1JXpLZvKZQV6FAIMCfaz3XFdJh9aCy8JumcybJwV
- '' SIG '' 2Jw8iehHOu+mFN9CPiEeuzHiLNFU9uqAkiuTNHdtkmcm
- '' SIG '' NsEqMdt4E0mrk5XcbKoMAHHAzc3dY+2RV5evjCqExd4N
- '' SIG '' dWWM4NEfQTu7tZLSaTl1mABMbEw9GEMDzmY7nF1OUXiR
- '' SIG '' Qjt+0FrgX0MCAwEAAaOCAScwggEjMB8GA1UdJQQYMBYG
- '' SIG '' CCsGAQUFBwMDBgorBgEEAYI3PQYBMB0GA1UdDgQWBBRr
- '' SIG '' 2fF2+KN4NKT3Rp4n8bC5bM82pjAfBgNVHSMEGDAWgBTm
- '' SIG '' /F97uyIAWORyTrX0IXQjMubvrDBWBgNVHR8ETzBNMEug
- '' SIG '' SaBHhkVodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtp
- '' SIG '' L2NybC9wcm9kdWN0cy9NaWNDb2RTaWdQQ0FfMjAxMC0w
- '' SIG '' Ny0wNi5jcmwwWgYIKwYBBQUHAQEETjBMMEoGCCsGAQUF
- '' SIG '' BzAChj5odHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtp
- '' SIG '' L2NlcnRzL01pY0NvZFNpZ1BDQV8yMDEwLTA3LTA2LmNy
- '' SIG '' dDAMBgNVHRMBAf8EAjAAMA0GCSqGSIb3DQEBCwUAA4IB
- '' SIG '' AQBSQvO9uPl8uzKyi9ukLZAQqUK3SJ69+UtczCFgpL2A
- '' SIG '' l2MuKon2m9a8IpIBc56D+/KLa70wWuztMD7uyOF/qDcp
- '' SIG '' 90wfrd4j1yptJQrRMD5D8aq1RTirbkTj0KEDM9daNOUh
- '' SIG '' MSuOKC547WVyB4e1/rwWxKwvZMuizcnqB2p1YuvM5map
- '' SIG '' PMEyOcXRwGxr+gU8K22z+0f9urwcgF0ShtQr2tIsKDJ9
- '' SIG '' VwWEJ4Ef8EFlUgHwaq95DbjtwGOnRNb5ngJVRQ54Xlzb
- '' SIG '' AHrpZSRzEni2UPk2JkiUBO3YQNXhPUM3H5hFnSzjNtpz
- '' SIG '' MFSXah4gXBP5DtiMMLbrPnWEpetjkgotSUu2MIIGcDCC
- '' SIG '' BFigAwIBAgIKYQxSTAAAAAAAAzANBgkqhkiG9w0BAQsF
- '' SIG '' ADCBiDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hp
- '' SIG '' bmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoT
- '' SIG '' FU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEyMDAGA1UEAxMp
- '' SIG '' TWljcm9zb2Z0IFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9y
- '' SIG '' aXR5IDIwMTAwHhcNMTAwNzA2MjA0MDE3WhcNMjUwNzA2
- '' SIG '' MjA1MDE3WjB+MQswCQYDVQQGEwJVUzETMBEGA1UECBMK
- '' SIG '' V2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwG
- '' SIG '' A1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSgwJgYD
- '' SIG '' VQQDEx9NaWNyb3NvZnQgQ29kZSBTaWduaW5nIFBDQSAy
- '' SIG '' MDEwMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
- '' SIG '' AQEA6Q5kUHlntcTj/QkATJ6UrPdWaOpE2M/FWE+ppXZ8
- '' SIG '' bUW60zmStKQe+fllguQX0o/9RJwI6GWTzixVhL99COMu
- '' SIG '' K6hBKxi3oktuSUxrFQfe0dLCiR5xlM21f0u0rwjYzIjW
- '' SIG '' axeUOpPOJj/s5v40mFfVHV1J9rIqLtWFu1k/+JC0K4N0
- '' SIG '' yiuzO0bj8EZJwRdmVMkcvR3EVWJXcvhnuSUgNN5dpqWV
- '' SIG '' XqsogM3Vsp7lA7Vj07IUyMHIiiYKWX8H7P8O7YASNUwS
- '' SIG '' pr5SW/Wm2uCLC0h31oVH1RC5xuiq7otqLQVcYMa0Kluc
- '' SIG '' IxxfReMaFB5vN8sZM4BqiU2jamZjeJPVMM+VHwIDAQAB
- '' SIG '' o4IB4zCCAd8wEAYJKwYBBAGCNxUBBAMCAQAwHQYDVR0O
- '' SIG '' BBYEFOb8X3u7IgBY5HJOtfQhdCMy5u+sMBkGCSsGAQQB
- '' SIG '' gjcUAgQMHgoAUwB1AGIAQwBBMAsGA1UdDwQEAwIBhjAP
- '' SIG '' BgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFNX2VsuP
- '' SIG '' 6KJcYmjRPZSQW9fOmhjEMFYGA1UdHwRPME0wS6BJoEeG
- '' SIG '' RWh0dHA6Ly9jcmwubWljcm9zb2Z0LmNvbS9wa2kvY3Js
- '' SIG '' L3Byb2R1Y3RzL01pY1Jvb0NlckF1dF8yMDEwLTA2LTIz
- '' SIG '' LmNybDBaBggrBgEFBQcBAQROMEwwSgYIKwYBBQUHMAKG
- '' SIG '' Pmh0dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9wa2kvY2Vy
- '' SIG '' dHMvTWljUm9vQ2VyQXV0XzIwMTAtMDYtMjMuY3J0MIGd
- '' SIG '' BgNVHSAEgZUwgZIwgY8GCSsGAQQBgjcuAzCBgTA9Bggr
- '' SIG '' BgEFBQcCARYxaHR0cDovL3d3dy5taWNyb3NvZnQuY29t
- '' SIG '' L1BLSS9kb2NzL0NQUy9kZWZhdWx0Lmh0bTBABggrBgEF
- '' SIG '' BQcCAjA0HjIgHQBMAGUAZwBhAGwAXwBQAG8AbABpAGMA
- '' SIG '' eQBfAFMAdABhAHQAZQBtAGUAbgB0AC4gHTANBgkqhkiG
- '' SIG '' 9w0BAQsFAAOCAgEAGnTvV08pe8QWhXi4UNMi/AmdrIKX
- '' SIG '' +DT/KiyXlRLl5L/Pv5PI4zSp24G43B4AvtI1b6/lf3mV
- '' SIG '' d+UC1PHr2M1OHhthosJaIxrwjKhiUUVnCOM/PB6T+DCF
- '' SIG '' F8g5QKbXDrMhKeWloWmMIpPMdJjnoUdD8lOswA8waX/+
- '' SIG '' 0iUgbW9h098H1dlyACxphnY9UdumOUjJN2FtB91TGcun
- '' SIG '' 1mHCv+KDqw/ga5uV1n0oUbCJSlGkmmzItx9KGg5pqdfc
- '' SIG '' wX7RSXCqtq27ckdjF/qm1qKmhuyoEESbY7ayaYkGx0aG
- '' SIG '' ehg/6MUdIdV7+QIjLcVBy78dTMgW77Gcf/wiS0mKbhXj
- '' SIG '' pn92W9FTeZGFndXS2z1zNfM8rlSyUkdqwKoTldKOEdqZ
- '' SIG '' Z14yjPs3hdHcdYWch8ZaV4XCv90Nj4ybLeu07s8n07Ve
- '' SIG '' afqkFgQBpyRnc89NT7beBVaXevfpUk30dwVPhcbYC/GO
- '' SIG '' 7UIJ0Q124yNWeCImNr7KsYxuqh3khdpHM2KPpMmRM19x
- '' SIG '' HkCvmGXJIuhCISWKHC1g2TeJQYkqFg/XYTyUaGBS79ZH
- '' SIG '' maCAQO4VgXc+nOBTGBpQHTiVmx5mMxMnORd4hzbOTsNf
- '' SIG '' svU9R1O24OXbC2E9KteSLM43Wj5AQjGkHxAIwlacvyRd
- '' SIG '' UQKdannSF9PawZSOB3slcUSrBmrm1MbfI5qWdcUxghW6
- '' SIG '' MIIVtgIBATCBlTB+MQswCQYDVQQGEwJVUzETMBEGA1UE
- '' SIG '' CBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEe
- '' SIG '' MBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSgw
- '' SIG '' JgYDVQQDEx9NaWNyb3NvZnQgQ29kZSBTaWduaW5nIFBD
- '' SIG '' QSAyMDEwAhMzAAAAFhEEtIg4jL7DAAAAAAAWMA0GCWCG
- '' SIG '' SAFlAwQCAQUAoIHAMBkGCSqGSIb3DQEJAzEMBgorBgEE
- '' SIG '' AYI3AgEEMBwGCisGAQQBgjcCAQsxDjAMBgorBgEEAYI3
- '' SIG '' AgEVMC8GCSqGSIb3DQEJBDEiBCD1TJpTGWrIm4napIKJ
- '' SIG '' YhzLZWUWjiXYdz5av5AAR9fYhjBUBgorBgEEAYI3AgEM
- '' SIG '' MUYwRKAigCAATQBpAGMAcgBvAHMAbwBmAHQAIABPAGYA
- '' SIG '' ZgBpAGMAZaEegBxodHRwOi8vb2ZmaWNlLm1pY3Jvc29m
- '' SIG '' dC5jb20gMA0GCSqGSIb3DQEBAQUABIIBAGu21FD/HaKe
- '' SIG '' x/u2c2W5ahMQfqtl1D7pmywem006AtumQmviOOafquMZ
- '' SIG '' mT/jJf9FrrR6tVKN2v8UfTJwIQi1lWlQAyYTA/bOGiI2
- '' SIG '' Uepum9IQyFbbtbqu7RWwqeEGbpugGTHF1H/5nXWTwUfj
- '' SIG '' XGUcySYJhQI20/DcGw0G2TD2xPPT7JfbHviXvH0d2nRW
- '' SIG '' P/10Gi1AmAY7+Koe/jZ6Z7uhzw2TbL1oZpBrvlDzY/0t
- '' SIG '' PopVtLTWf8MMQLD81+oBkj9TcgG684Gu4oYWoXQ2VGxX
- '' SIG '' hxTwJJWmJ/Lk16pxtmfsTDKmbVZQKQq/Kfmot6mBhT+v
- '' SIG '' srzqUZmrI5fj8kmq27NRiYihghMyMIITLgYKKwYBBAGC
- '' SIG '' NwMDATGCEx4wghMaBgkqhkiG9w0BBwKgghMLMIITBwIB
- '' SIG '' AzEPMA0GCWCGSAFlAwQCAQUAMIIBPQYLKoZIhvcNAQkQ
- '' SIG '' AQSgggEsBIIBKDCCASQCAQEGCisGAQQBhFkKAwEwMTAN
- '' SIG '' BglghkgBZQMEAgEFAAQgaPCujLfd+uxBHGfJ4h+nFCAS
- '' SIG '' qeiGNAoy2HNoucsL2xUCBlBkYEUZ2hgTMjAxMjEwMDIw
- '' SIG '' MDA4NTEuMjQ3WjAHAgEBgAIB9KCBuaSBtjCBszELMAkG
- '' SIG '' A1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAO
- '' SIG '' BgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29m
- '' SIG '' dCBDb3Jwb3JhdGlvbjENMAsGA1UECxMETU9QUjEnMCUG
- '' SIG '' A1UECxMebkNpcGhlciBEU0UgRVNOOkI4RUMtMzBBNC03
- '' SIG '' MTQ0MSUwIwYDVQQDExxNaWNyb3NvZnQgVGltZS1TdGFt
- '' SIG '' cCBTZXJ2aWNloIIOxzCCBnEwggRZoAMCAQICCmEJgSoA
- '' SIG '' AAAAAAIwDQYJKoZIhvcNAQELBQAwgYgxCzAJBgNVBAYT
- '' SIG '' AlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQH
- '' SIG '' EwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29y
- '' SIG '' cG9yYXRpb24xMjAwBgNVBAMTKU1pY3Jvc29mdCBSb290
- '' SIG '' IENlcnRpZmljYXRlIEF1dGhvcml0eSAyMDEwMB4XDTEw
- '' SIG '' MDcwMTIxMzY1NVoXDTI1MDcwMTIxNDY1NVowfDELMAkG
- '' SIG '' A1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAO
- '' SIG '' BgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29m
- '' SIG '' dCBDb3Jwb3JhdGlvbjEmMCQGA1UEAxMdTWljcm9zb2Z0
- '' SIG '' IFRpbWUtU3RhbXAgUENBIDIwMTAwggEiMA0GCSqGSIb3
- '' SIG '' DQEBAQUAA4IBDwAwggEKAoIBAQCpHQ28dxGKOiDs/BOX
- '' SIG '' 9fp/aZRrdFQQ1aUKAIKF++18aEssX8XD5WHCdrc+Zitb
- '' SIG '' 8BVTJwQxH0EbGpUdzgkTjnxhMFmxMEQP8WCIhFRDDNdN
- '' SIG '' uDgIs0Ldk6zWczBXJoKjRQ3Q6vVHgc2/JGAyWGBG8lhH
- '' SIG '' hjKEHnRhZ5FfgVSxz5NMksHEpl3RYRNuKMYa+YaAu99h
- '' SIG '' /EbBJx0kZxJyGiGKr0tkiVBisV39dx898Fd1rL2KQk1A
- '' SIG '' UdEPnAY+Z3/1ZsADlkR+79BL/W7lmsqxqPJ6Kgox8NpO
- '' SIG '' BpG2iAg16HgcsOmZzTznL0S6p/TcZL2kAcEgCZN4zfy8
- '' SIG '' wMlEXV4WnAEFTyJNAgMBAAGjggHmMIIB4jAQBgkrBgEE
- '' SIG '' AYI3FQEEAwIBADAdBgNVHQ4EFgQU1WM6XIoxkPNDe3xG
- '' SIG '' G8UzaFqFbVUwGQYJKwYBBAGCNxQCBAweCgBTAHUAYgBD
- '' SIG '' AEEwCwYDVR0PBAQDAgGGMA8GA1UdEwEB/wQFMAMBAf8w
- '' SIG '' HwYDVR0jBBgwFoAU1fZWy4/oolxiaNE9lJBb186aGMQw
- '' SIG '' VgYDVR0fBE8wTTBLoEmgR4ZFaHR0cDovL2NybC5taWNy
- '' SIG '' b3NvZnQuY29tL3BraS9jcmwvcHJvZHVjdHMvTWljUm9v
- '' SIG '' Q2VyQXV0XzIwMTAtMDYtMjMuY3JsMFoGCCsGAQUFBwEB
- '' SIG '' BE4wTDBKBggrBgEFBQcwAoY+aHR0cDovL3d3dy5taWNy
- '' SIG '' b3NvZnQuY29tL3BraS9jZXJ0cy9NaWNSb29DZXJBdXRf
- '' SIG '' MjAxMC0wNi0yMy5jcnQwgaAGA1UdIAEB/wSBlTCBkjCB
- '' SIG '' jwYJKwYBBAGCNy4DMIGBMD0GCCsGAQUFBwIBFjFodHRw
- '' SIG '' Oi8vd3d3Lm1pY3Jvc29mdC5jb20vUEtJL2RvY3MvQ1BT
- '' SIG '' L2RlZmF1bHQuaHRtMEAGCCsGAQUFBwICMDQeMiAdAEwA
- '' SIG '' ZQBnAGEAbABfAFAAbwBsAGkAYwB5AF8AUwB0AGEAdABl
- '' SIG '' AG0AZQBuAHQALiAdMA0GCSqGSIb3DQEBCwUAA4ICAQAH
- '' SIG '' 5ohRDeLG4Jg/gXEDPZ2joSFvs+umzPUxvs8F4qn++ldt
- '' SIG '' GTCzwsVmyWrf9efweL3HqJ4l4/m87WtUVwgrUYJEEvu5
- '' SIG '' U4zM9GASinbMQEBBm9xcF/9c+V4XNZgkVkt070IQyK+/
- '' SIG '' f8Z/8jd9Wj8c8pl5SpFSAK84Dxf1L3mBZdmptWvkx872
- '' SIG '' ynoAb0swRCQiPM/tA6WWj1kpvLb9BOFwnzJKJ/1Vry/+
- '' SIG '' tuWOM7tiX5rbV0Dp8c6ZZpCM/2pif93FSguRJuI57BlK
- '' SIG '' cWOdeyFtw5yjojz6f32WapB4pm3S4Zz5Hfw42JT0xqUK
- '' SIG '' loakvZ4argRCg7i1gJsiOCC1JeVk7Pf0v35jWSUPei45
- '' SIG '' V3aicaoGig+JFrphpxHLmtgOR5qAxdDNp9DvfYPw4Ttx
- '' SIG '' Cd9ddJgiCGHasFAeb73x4QDf5zEHpJM692VHeOj4qEir
- '' SIG '' 995yfmFrb3epgcunCaw5u+zGy9iCtHLNHfS4hQEegPsb
- '' SIG '' iSpUObJb2sgNVZl6h3M7COaYLeqN4DMuEin1wC9UJyH3
- '' SIG '' yKxO2ii4sanblrKnQqLJzxlBTeCG+SqaoxFmMNO7dDJL
- '' SIG '' 32N79ZmKLxvHIa9Zta7cRDyXUHHXodLFVeNp3lfB0d4w
- '' SIG '' wP3M5k37Db9dT+mdHhk4L7zPWAUu7w2gUDXa7wknHNWz
- '' SIG '' fjUeCLraNtvTX4/edIhJEjCCBNEwggO5oAMCAQICCmEH
- '' SIG '' 1FUAAAAAAA4wDQYJKoZIhvcNAQELBQAwfDELMAkGA1UE
- '' SIG '' BhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNV
- '' SIG '' BAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBD
- '' SIG '' b3Jwb3JhdGlvbjEmMCQGA1UEAxMdTWljcm9zb2Z0IFRp
- '' SIG '' bWUtU3RhbXAgUENBIDIwMTAwHhcNMTIwMTA5MjEzNTMx
- '' SIG '' WhcNMTMwNDA5MjE0NTMxWjCBszELMAkGA1UEBhMCVVMx
- '' SIG '' EzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1Jl
- '' SIG '' ZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3Jh
- '' SIG '' dGlvbjENMAsGA1UECxMETU9QUjEnMCUGA1UECxMebkNp
- '' SIG '' cGhlciBEU0UgRVNOOkI4RUMtMzBBNC03MTQ0MSUwIwYD
- '' SIG '' VQQDExxNaWNyb3NvZnQgVGltZS1TdGFtcCBTZXJ2aWNl
- '' SIG '' MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA
- '' SIG '' weiiiavCaSU5yAO7J7LMoFhyzUv4QGcC85Sl6EdWInsg
- '' SIG '' nJ4/uPz92BPkJqKQ7+S9iEplO1iwcoUEiARNaVXKHaxz
- '' SIG '' g/vjTPVeJrFRZwdt7mDhCISPS/Jmzo1gPxiQ89ySBo5u
- '' SIG '' 9eCyW35wKULrQhWmxVXzHr3ZvcsT2eqwdL97m4xWCbmI
- '' SIG '' ZSSUTMqApPPv8se3fU23u6A/U6J5jWzxubjJ5HXUXttd
- '' SIG '' reRWpTihDFQ7KcsEyB4MrRJP8qXec6sZ9HUC0HTUB+GR
- '' SIG '' WWqbJRiYCyjH13ViaapBfos7kYb/pPTqtveVi5nDphrs
- '' SIG '' i+jxsygf7gyFNBKBUwfIyW9vAqZ86Be0DwIDAQABo4IB
- '' SIG '' GzCCARcwHQYDVR0OBBYEFMbW5nU1U+/wnbjYtEvuXlMB
- '' SIG '' CGPZMB8GA1UdIwQYMBaAFNVjOlyKMZDzQ3t8RhvFM2ha
- '' SIG '' hW1VMFYGA1UdHwRPME0wS6BJoEeGRWh0dHA6Ly9jcmwu
- '' SIG '' bWljcm9zb2Z0LmNvbS9wa2kvY3JsL3Byb2R1Y3RzL01p
- '' SIG '' Y1RpbVN0YVBDQV8yMDEwLTA3LTAxLmNybDBaBggrBgEF
- '' SIG '' BQcBAQROMEwwSgYIKwYBBQUHMAKGPmh0dHA6Ly93d3cu
- '' SIG '' bWljcm9zb2Z0LmNvbS9wa2kvY2VydHMvTWljVGltU3Rh
- '' SIG '' UENBXzIwMTAtMDctMDEuY3J0MAwGA1UdEwEB/wQCMAAw
- '' SIG '' EwYDVR0lBAwwCgYIKwYBBQUHAwgwDQYJKoZIhvcNAQEL
- '' SIG '' BQADggEBAI0KBSOJ6bP7QV7OBc3Qqr9NuRE/A3XEtCto
- '' SIG '' Oz7ZTYBcGswSypS0o+c2jD54GkUSz8eNIK/HNwpipKCv
- '' SIG '' Yqp9KTUgw66SS/r2uF5LX3RmrPKhLXA4cdGYNlu/BuX+
- '' SIG '' LeyJ2KXql1BCgrU1+xB4fxhe7baUWx9o5rN8N2/4P8L5
- '' SIG '' b4Wlw2clhOvZuKCjtO5YJqk6yH0ESwyoE0ZtnsZaYOcI
- '' SIG '' cZEblJidE2CtM702fe0IaCLIMOffLMQr9T+4gVlPq+1s
- '' SIG '' vCAGEQVMMDkoR1BU37nOc9+Q82n/qBMTgnvQG9ogqcFQ
- '' SIG '' 5skb/6SCon+aXmEWujxcUQfTqh0ixjkd346o0uBTH9yh
- '' SIG '' ggN5MIICYQIBATCB46GBuaSBtjCBszELMAkGA1UEBhMC
- '' SIG '' VVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcT
- '' SIG '' B1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jw
- '' SIG '' b3JhdGlvbjENMAsGA1UECxMETU9QUjEnMCUGA1UECxMe
- '' SIG '' bkNpcGhlciBEU0UgRVNOOkI4RUMtMzBBNC03MTQ0MSUw
- '' SIG '' IwYDVQQDExxNaWNyb3NvZnQgVGltZS1TdGFtcCBTZXJ2
- '' SIG '' aWNloiUKAQEwCQYFKw4DAhoFAAMVAIMU1+AB1G7ZyJUz
- '' SIG '' KxZvn3EmZVMnoIHCMIG/pIG8MIG5MQswCQYDVQQGEwJV
- '' SIG '' UzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMH
- '' SIG '' UmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBv
- '' SIG '' cmF0aW9uMQ0wCwYDVQQLEwRNT1BSMScwJQYDVQQLEx5u
- '' SIG '' Q2lwaGVyIE5UUyBFU046QjAyNy1DNkY4LTFEODgxKzAp
- '' SIG '' BgNVBAMTIk1pY3Jvc29mdCBUaW1lIFNvdXJjZSBNYXN0
- '' SIG '' ZXIgQ2xvY2swDQYJKoZIhvcNAQEFBQACBQDUFAnFMCIY
- '' SIG '' DzIwMTIxMDAxMTIyMzMzWhgPMjAxMjEwMDIxMjIzMzNa
- '' SIG '' MHcwPQYKKwYBBAGEWQoEATEvMC0wCgIFANQUCcUCAQAw
- '' SIG '' CgIBAAICCfICAf8wBwIBAAICF3EwCgIFANQVW0UCAQAw
- '' SIG '' NgYKKwYBBAGEWQoEAjEoMCYwDAYKKwYBBAGEWQoDAaAK
- '' SIG '' MAgCAQACAxbjYKEKMAgCAQACAwehIDANBgkqhkiG9w0B
- '' SIG '' AQUFAAOCAQEAR/OueYR+g/HRIidEawooT2diG+SL852l
- '' SIG '' aPKtFYpQ2evbBhC6mrWYwfJJh7+so1dptvEQ5oCjx2Ko
- '' SIG '' /MSkTqsyLn2cfgT160PMyOeabh4/jMgUGU/C1YnkM4R2
- '' SIG '' K4ShNBu3H6cGxTJMFv3edD+5tEZjPFJvdfJkewL2u+4T
- '' SIG '' Jzbbo/SZ2Mp0mYYNnYlXBbwXy27ZtKeQqwdZO5oqyNlg
- '' SIG '' NwYktOW1REwe9+1YIHfw9IhLPmAjF+ag7+FmKZG1ou1J
- '' SIG '' R95O7apQeOrLONDdraALCmb4JgNntqwy+x+RgmXdnUgo
- '' SIG '' 7mZF2oiDM/NqIWB/mN1ILdPF/ckEXOtLutVGHcEKpdpb
- '' SIG '' EzGCAuMwggLfAgEBMIGKMHwxCzAJBgNVBAYTAlVTMRMw
- '' SIG '' EQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRt
- '' SIG '' b25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRp
- '' SIG '' b24xJjAkBgNVBAMTHU1pY3Jvc29mdCBUaW1lLVN0YW1w
- '' SIG '' IFBDQSAyMDEwAgphB9RVAAAAAAAOMA0GCWCGSAFlAwQC
- '' SIG '' AQUAoIIBKTAaBgkqhkiG9w0BCQMxDQYLKoZIhvcNAQkQ
- '' SIG '' AQQwLwYJKoZIhvcNAQkEMSIEIMVDfBvNNWKr5LBboTVX
- '' SIG '' gRlLtx9uanEUsfPaJoM5/ZbLMIHZBgsqhkiG9w0BCRAC
- '' SIG '' DDGByTCBxjCBwzCBqAQUgxTX4AHUbtnIlTMrFm+fcSZl
- '' SIG '' UycwgY8wgYCkfjB8MQswCQYDVQQGEwJVUzETMBEGA1UE
- '' SIG '' CBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEe
- '' SIG '' MBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSYw
- '' SIG '' JAYDVQQDEx1NaWNyb3NvZnQgVGltZS1TdGFtcCBQQ0Eg
- '' SIG '' MjAxMAIKYQfUVQAAAAAADjAWBBRjIEaoyFA06dGB75Ys
- '' SIG '' NATncLtMNDANBgkqhkiG9w0BAQsFAASCAQBvTI/fQJ7r
- '' SIG '' /bKY6hyQc46TuKX4MBG5kc4j3qwYY9hBWAfZtebgojiU
- '' SIG '' N4sDMmAQ9RJo6/tAXqtoc2hh/hn3nwJmXbpDzEj50wmB
- '' SIG '' zMnOyo+YNcTkGhV9z3DfdIzLJ6iglM6y3kyy8ySjdXw3
- '' SIG '' X9b4UlqeEetg6mb4S7FtLRnBGPNB9wXLt2Cw3tSSLWbt
- '' SIG '' hLeGi6Xh5AkWaNMz/2SZZIj7vVj/S01BZsGxGpV6BmXP
- '' SIG '' 0UW1gEJSNbqBKPuUsTD1I6aMH7hp57XL9q3np5DHU/Ae
- '' SIG '' q45jBLGD0mx3n73y//7FnQiFKpoRM8l33KGaUkkYHDIM
- '' SIG '' 5XalKnWa59yf/0L8Ls6Bzflz
- '' SIG '' End signature block
Add Comment
Please, Sign In to add comment