Käyttäjän työkalut

Sivuston työkalut


ohjeet:skriptit

Tämä on vanha versio dokumentista!


Skriptejä softajakelun avuksi

Tänne on kerätty skriptejä, joista on todettu olevan hyötyä softajakelun yhteydessä.

Onko koneelle kirjautunut käyttäjä domain-käyttäjä

Seuraava VBScript-koodinpätkä hakee koneelle kirjautuneen käyttäjän tiedot ympäristömuuttujista ja tarkistaa onko käyttäjä domain-tunnus vaiko ei.

  Set objShell = CreateObject("WScript.Shell")
  Set objProcEnv = objShell.Environment("Process")
  strUserName = objProcEnv("USERNAME")
  strUserDomain = objProcEnv("USERDOMAIN")
  strUserDNSDomain = objProcEnv("USERDNSDOMAIN")
 
If strUserDNSDomain <> "UTU.FI" Then
  strValue = "Koneelle kirjautunut käyttäjä " & VbCrLf & VbCrLf & strUserDomain & "\" & strUserName & VbCrLf & VbCrLf & "ei ole utu-domainkäyttäjä."  
  answer = MsgBox(strValue, vbOKOnly + vbCritical + vbSystemModal, "Huomio!")
  WScript.Quit ' palautetaan -10, jos ei ole utu-domainin käyttäjä

Onko prosessi käynnissä

VBSkript-funktio, joka käyttää WMI-rajapintaa selvittämään onko koneella tietyn niminen prosessi käynnissä.

Function isProcessRunning(strIn)
 
  Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
  Set colProcesses = objWMIService.ExecQuery("Select * from Win32_Process Where Name = '" & strIn & "'")
 
  If colProcesses.Count > 0 Then
    isProcessRunning = True
  Else
    isProcessRunning = False
  End If
End Function

x86 vaiko x64

Seuraavalla VBScript-funktiolla saat selville käyttöjärjestelmän bittisyyden riippumatta siitä ajetaanko skripti aidosti 32-bittisessä Windowsissa, 32-bittisessä ympäristössä aidosti 64-bittisessä Windowsissa vaiko 64-bittisessä ympäristössä aidosti 64-bittisessä Windowsissa.

' Finds out Real Operating System architecture (despite the running process image type)
' Returns: 0: OS architecture not found (or propably Intel Itanium)
'          32: for 32-bit OS (x86)
'          64: for 64-bit OS and 32-bit process on 64-bit OS (AMD64)
 
Function GetOSArchitecture
  Dim objProcEnv
  Set objProcEnv = objShell.Environment("Process")
 
  Select Case objProcEnv("PROCESSOR_ARCHITECTURE")
    Case "x86"
      Select Case objProcEnv("PROCESSOR_ARCHITEW6432")
         Case ""
           GetOSArchitecture = 32
         Case "AMD64"
           GetOSArchitecture = 64
         Case Else 
           GetOSArchitecture = 0
      End Select
    Case "AMD64"
      GetOSArchitecture = 64
    Case Else
      GetOSArchitecture = 0
  End Select
 
End Function

x64 - registryn käsittely

Seuraavat VBScript-funktiot (EnumRegKey, ReadRegStr, CreateRegKey, CreateRegStringValue) mahdollistavat registryn Key ja REG_SZ -arvojen käsittelyn WoW64-rajapinnan ohi.

' --- Enumerates registry keys from the local computer's registry using WMI.
'   Parameters:
'     RootKey - The registry hive (see http://msdn.microsoft.com/en-us/library/aa390788(VS.85).aspx for a list of possible values).
'     Key - The key to be enumerated.
'     RegType - The registry bitness: 32 or 64.
'   Returns:
'     Null if Key was not found, otherwise Variable Array with Keys as strings
 
Function EnumRegKey (RootKey, Key, RegType)
  Dim objCtx, objLocator, objReg, objInParams, objOutParams
 
  Set objCtx = CreateObject("WbemScripting.SWbemNamedValueSet")
  objCtx.Add "__ProviderArchitecture", RegType
  objCtx.Add "__RequiredArchitecture", TRUE
 
  Set objLocator = CreateObject("Wbemscripting.SWbemLocator")
  Set objReg = objLocator.ConnectServer("", "root\default", "", "", , , , objCtx).Get("StdRegProv")
 
  Set objInParams = objReg.Methods_("EnumKey").InParameters
  objInParams.hDefKey = RootKey
  objInParams.sSubKeyName = Key
 
  Set objOutParams = objReg.ExecMethod_("EnumKey", objInParams, , objCtx)
 
  EnumRegKey = objOutParams.sNames
End Function
 
 
' --- Reads a REG_SZ value from the local computer's registry using WMI.
'   Parameters:
'     RootKey - The registry hive (see http://msdn.microsoft.com/en-us/library/aa390788(VS.85).aspx for a list of possible values).
'     Key - The key that contains the desired value.
'     Value - The value that you want to get.
'     RegType - The registry bitness: 32 or 64.
'   Returns:
'     Null if Key was not found, otherwise Value as a string 
 
Function ReadRegStr (RootKey, Key, Value, RegType)
    Dim objCtx, objLocator, objReg, objInParams, objOutParams
 
    Set objCtx = CreateObject("WbemScripting.SWbemNamedValueSet")
    objCtx.Add "__ProviderArchitecture", RegType
    objCtx.Add "__RequiredArchitecture", TRUE
 
    Set objLocator = CreateObject("Wbemscripting.SWbemLocator")
    Set objReg = objLocator.ConnectServer("", "root\default", "", "", , , , objCtx).Get("StdRegProv")
 
    Set objInParams = objReg.Methods_("GetStringValue").InParameters
    objInParams.hDefKey = RootKey
    objInParams.sSubKeyName = Key
    objInParams.sValueName = Value
 
    Set objOutParams = objReg.ExecMethod_("GetStringValue", objInParams, , objCtx)
 
    ReadRegStr = objOutParams.sValue
 
End Function
 
' --- Creates registry key to the local computer's registry using WMI.
'   Parameters:
'     RootKey - The registry hive (see http://msdn.microsoft.com/en-us/library/aa390788(VS.85).aspx for a list of possible values).
'     Key - The key to be created.
'     RegType - The registry bitness: 32 or 64.
'   Returns:
'     Nothing
 
Function CreateRegKey (RootKey, Key, RegType)
  Dim objCtx, objLocator, objReg, objInParams
 
  Set objCtx = CreateObject("WbemScripting.SWbemNamedValueSet")
  objCtx.Add "__ProviderArchitecture", RegType
  objCtx.Add "__RequiredArchitecture", TRUE
 
  Set objLocator = CreateObject("Wbemscripting.SWbemLocator")
  Set objReg = objLocator.ConnectServer("", "root\default", "", "", , , , objCtx).Get("StdRegProv")
 
  Set objInParams = objReg.Methods_("CreateKey").InParameters
  objInParams.hDefKey = RootKey
  objInParams.sSubKeyName = Key
 
  objReg.ExecMethod_ "CreateKey", objInParams, , objCtx
 
End Function
 
 
' --- Creates a REG_SZ type registry Key on value to the local computer's registry using WMI.
'   Parameters:
'     RootKey - The registry hive (see http://msdn.microsoft.com/en-us/library/aa390788(VS.85).aspx for a list of possible values).
'     Key - The REG_SZ Key Name to be created.
'     Name - Name on the regisry entry 
'     Value - Value
'     RegType - The registry bitness: 32 or 64.
'   Returns:
'     Nothing
 
Function CreateRegStringValue (RootKey, Key, Name, Value, RegType)
  Dim objCtx, objLocator, objReg, objInParams
 
  Set objCtx = CreateObject("WbemScripting.SWbemNamedValueSet")
  objCtx.Add "__ProviderArchitecture", RegType
  objCtx.Add "__RequiredArchitecture", TRUE
 
  Set objLocator = CreateObject("Wbemscripting.SWbemLocator")
  Set objReg = objLocator.ConnectServer("", "root\default", "", "", , , , objCtx).Get("StdRegProv")
 
  Set objInParams = objReg.Methods_("SetStringValue").InParameters
  objInParams.hDefKey = RootKey
  objInParams.sSubKeyName = Key
  objInParams.sValueName = Name
  objInParams.sValue = Value
 
  objReg.ExecMethod_ "SetStringValue", objInParams, , objCtx
 
End Function

Onko ohjelman tietty versio asennettuna?

  Option Explicit
  Dim oShell
  Dim regPath
  Dim version
 
  Set oShell = CreateObject("Wscript.Shell")
 
  Select Case GetOSArchitecture
    Case 32    ' x86
      RegPath = "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{26A24AE4-039D-4CA4-87B4-2F83216035FF}\DisplayVersion"
    Case Else  ' x64
      RegPath = "HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{26A24AE4-039D-4CA4-87B4-2F83216035FF}\DisplayVersion"
  End Select
 
  On Error Resume Next
  version = oShell.RegRead(RegPath)
  On Error Goto 0
 
  If version = "6.0.350" Then
    wScript.Echo("Asennettuna")
  End If
 
  wScript.Quit
ohjeet/skriptit.1348829670.txt.gz · Viimeksi muutettu: 2014/11/20 15:01 (ulkoinen muokkaus)