' rte_remove.vbs version 0.8 ' Cкрипт удаляет оставщиеся компоненты после штатного удаления драйвера eToken ' выполняет действия в соответсвии с FAQ 1000421: ' http://support.aladdin.ru/otrs/customer.pl?Action=CustomerFAQ&CategoryID=3&ItemID=421 ' Запуск: cscript rte_remove.vbs ' На Vista, Windows 2008, Windows 7 необходимо запускать явно с правами администратора Dim result 'Get Environment variables Set oShell = CreateObject( "WScript.Shell" ) systemroot = oShell.ExpandEnvironmentStrings("%SYSTEMROOT%") ' First, find out if RTE or PKI Client is installed If GetProductVersion("eToken Run Time Environment") <> "" Then If MsgBox("На данном компьютере обнаружена установленная версия eToken RTE " & GetProductVersion("eToken Run Time Environment") & " Рекомендуется предварительно удалить драйвер штатными средствами, затем запустить это скрипт снова. Хотите все равно продолжить ручное удаление?", 4, "eToken RTE is installed") = 7 Then WScript.Quit 1 End If Else If GetProductVersion("eToken PKI Client") <> "" then If MsgBox ("На данном компьютере обнаружена установленная версия eToken PKI Client " & GetProductVersion("eToken PKI Client") & " Рекомендуется предварительно удалить драйвер штатными средствами, затем запустить это скрипт снова. Хотите все равно продолжить ручное удаление?", 4, "eToken PKI is installed") Then WScript.Quit 1 End If Else WScript.Echo "eToken RTE and PKI Client is not installed on your computer." End If End If ' Delete driver files DeleteFile systemroot & "\system32\eToken.dll" DeleteFile systemroot & "\system32\drivers\aksup.sys" DeleteFile systemroot & "\system32\drivers\aksifdh.sys" ' Delete folders DeleteFolder systemroot & "\system32\Aladdin\eToken" DeleteFolder systemroot & "\system32\Aladdin" ' Clear registry DeleteRegKeyAndSubKeys "HKEY_LOCAL_MACHINE", "SOFTWARE\Aladdin\eToken\MIDDLEWARE" DeleteRegKeyAndSubKeys "HKEY_LOCAL_MACHINE", "SOFTWARE\Aladdin\eToken\CachedCertificates" DeleteRegKeyAndSubKeys "HKEY_LOCAL_MACHINE", "SOFTWARE\Aladdin\eToken\Core" DeleteRegKeyAndSubKeys "HKEY_LOCAL_MACHINE", "SOFTWARE\Aladdin\eToken\eTCAPI" DeleteRegKeyAndSubKeys "HKEY_LOCAL_MACHINE", "SOFTWARE\Aladdin\eToken\eTCertStore" DeleteRegKeyAndSubKeys "HKEY_LOCAL_MACHINE", "SOFTWARE\Aladdin\eToken\eTProperties" DeleteRegKeyAndSubKeys "HKEY_LOCAL_MACHINE", "SOFTWARE\Aladdin\eToken\eTFormat" DeleteRegKeyAndSubKeys "HKEY_LOCAL_MACHINE", "SOFTWARE\Aladdin\eToken\Cache" DeleteRegKeyAndSubKeys "HKEY_LOCAL_MACHINE", "SOFTWARE\Aladdin\eToken\Logging" DeleteRegKeyAndSubKeys "HKEY_CURRENT_USER", "SOFTWARE\Aladdin\eToken\MIDDLEWARE" DeleteRegKeyAndSubKeys "HKEY_CURRENT_USER", "SOFTWARE\Aladdin\eToken\CachedCertificates" DeleteRegKeyAndSubKeys "HKEY_CURRENT_USER", "SOFTWARE\Aladdin\eToken\Core" DeleteRegKeyAndSubKeys "HKEY_CURRENT_USER", "SOFTWARE\Aladdin\eToken\eTCAPI" DeleteRegKeyAndSubKeys "HKEY_CURRENT_USER", "SOFTWARE\Aladdin\eToken\eTCertStore" DeleteRegKeyAndSubKeys "HKEY_CURRENT_USER", "SOFTWARE\Aladdin\eToken\eTProperties" DeleteRegKeyAndSubKeys "HKEY_CURRENT_USER", "SOFTWARE\Aladdin\eToken\eTFormat" DeleteRegKeyAndSubKeys "HKEY_CURRENT_USER", "SOFTWARE\Aladdin\eToken\Cache" DeleteRegKeyAndSubKeys "HKEY_CURRENT_USER", "SOFTWARE\Aladdin\eToken\Logging" ' Delete eToken service strComputer = "." Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Set colListOfServices = objWMIService.ExecQuery _ ("Select * from Win32_Service Where Name = 'etsrv' or Name = 'ETOKSRV'") For Each objService in colListOfServices objService.StopService() objService.Delete() WScript.Echo "eToken service was successfully deleted" Next ' Kill processes Set objNetwork = Wscript.CreateObject("Wscript.Network") 'Kill Process based on PKIMonitor.exe strComputer = "." Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Set colProcessList = objWMIService.ExecQuery("SELECT * FROM Win32_Process WHERE Name = 'PKIMonitor.exe' OR Name = 'eTCrtMng.exe'") For Each objProcess In colProcessList objProcess.Terminate() Next WScript.Echo "Завершено." function GetProductVersion(strProductName) ' find out product version Const HKLM = &H80000002 'HKEY_LOCAL_MACHINE strComputer = "." strKey = "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\" Set objReg = GetObject("winmgmts://" & strComputer & "/root/default:StdRegProv") objReg.EnumKey HKLM, strKey, arrSubkeys For Each strSubkey In arrSubkeys objReg.GetStringValue HKLM, strKey & strSubkey, "DisplayName", strValue1 If Instr(1,strValue1,strProductName) = 1 _ and Instr(1,strValue1,"Patch") = 0 then objReg.GetStringValue HKLM, strKey & strSubkey, "DisplayVersion", product_version_string End If Next GetProductVersion = product_version_string end function Function RegistryKeyExists(Hive, strKey, strSubkey) RegistryKeyExists = False Dim reg, aSubkeys, s Set reg = GetObject("WinMgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv") reg.EnumKey , strKey, aSubkeys If Not IsNull(aSubkeys) Then For Each s In aSubkeys If lcase(s)=lcase(strSubkey) Then RegistryKeyExists = True Exit Function End If Next End If End Function Sub DeleteRegKeyAndSubKeys(strRegTree, strKeyPath) 'strRegTree = "HKEY_CLASSES_ROOT" ' "HKEY_CURRENT_USER" ' "HKEY_LOCAL_MACHINE" ' "HKEY_USERS" ' "HKEY_CURRENT_CONFIG" 'strKeyPath is the registry key to delete. Example : ' "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\MySoftware" Const HKEY_CLASSES_ROOT = &H80000000 Const HKEY_CURRENT_USER = &H80000001 Const HKEY_LOCAL_MACHINE = &H80000002 Const HKEY_USERS = &H80000003 Const HKEY_CURRENT_CONFIG = &H80000005 Dim hTree, strComputer, oReg, arrSubKeys, strSubKey, Return Select Case strRegTree Case "HKEY_CLASSES_ROOT" hTree = HKEY_CLASSES_ROOT Case "HKEY_CURRENT_USER" hTree = HKEY_CURRENT_USER Case "HKEY_LOCAL_MACHINE" hTree = HKEY_LOCAL_MACHINE Case "HKEY_USERS" hTree = HKEY_USERS Case "HKEY_CURRENT_CONFIG" hTree = HKEY_CURRENT_CONFIG End Select strComputer = "." Set oReg = GetObject("winmgmts:\\" & strComputer & "\root\default:StdRegProv") oReg.EnumKey hTree, strKeyPath, arrSubKeys If IsArray(arrSubKeys) Then For Each strSubKey In arrSubKeys DeleteRegKeyAndSubKeys strRegTree, strKeyPath & "\" & strSubKey Next End If Return = oReg.DeleteKey(hTree, strKeyPath) If (Return = 0) And (Err.Number = 0) Then WScript.Echo strRegTree & strKeyPath & " successfully deleted." Else If RegistryKeyExists(hTree, strKeyPath, strSubKey) = True Then WScript.Echo strRegTree & strKeyPath & " DeleteKey failed. Error = " & Err.Number Else WScript.Echo strRegTree & strKeyPath & " does not exists." End If End If End Sub Sub DeleteFile (StrTarget) Dim fso_file Set fso_file = CreateObject("Scripting.FileSystemObject") If (fso_file.FileExists(StrTarget)) Then Return = fso_file.DeleteFile (strTarget, True) If (Return = 0) And (Err.Number = 0) Then WScript.Echo StrTarget & " successfully deleted." Else Wscript.Echo StrTarget & "deletion is failed. Error = " & Err.Number End If Else Wscript.Echo StrTarget & " doesn't exist." End If End Sub Sub DeleteFolder (StrTarget) Dim fso_file Set fso_file = CreateObject("Scripting.FileSystemObject") If (fso_file.FolderExists(StrTarget)) Then Return = fso_file.DeleteFolder (strTarget, True) If (Return = 0) And (Err.Number = 0) Then WScript.Echo StrTarget & " successfully deleted." Else Wscript.Echo StrTarget & "deletion is failed. Error = " & Err.Number End If Else Wscript.Echo StrTarget & " doesn't exist." End If End Sub