Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Wydajność wywołań półsynchronicznych jest zwykle odpowiednia dla większości sytuacji. Wywołania asynchroniczne zazwyczaj nie są zalecanym rozwiązaniem dla skryptów. Jeśli jednak należy wykonać wywołania asynchroniczne, można ustawić wartość rejestru, aby wymusić przez WMI przeprowadzanie kontroli dostępu podczas takich wywołań.
HKEY_LOCAL_MACHINE\Software\Microsoft\WBEM\CIMOM\UnsecAppAccessControlDefault wartość rejestru określa, czy usługa WMI sprawdza akceptowalny poziom uwierzytelniania podczas zwracania danych dla wywołania asynchronicznego. Wywołanie zwrotne można zwrócić na niższym poziomie uwierzytelniania niż oryginalne wywołanie asynchroniczne. Domyślnie ta wartość jest ustawiona na zero, aby wywołania zwrotne nie były sprawdzane. Aby zabezpieczyć wywołania asynchroniczne w skrypcie, należy ustawić klucz rejestru na 1 (jeden).
Skrypty mogą używać metod GetStringValue i SetStringValue metod obiektu rejestru StdRegProv, aby zmienić ustawienie wartości rejestru UnsecAppAccessControlDefault. Aby uzyskać więcej informacji na temat uwierzytelniania i poziomów personifikacji wymaganych do dostępu zdalnego, zobacz Connecting to WMI on a Remote Computer.
Aby ustawić asynchroniczne zabezpieczenia wywołań w języku VBScript
Poniższy przykład kodu VBScript pokazuje, jak zmienić wartość rejestru, aby kontrolować uwierzytelnianie WMI wywołań zwrotnych.
Skrypt zmienia wartość UnsecAppAccessControlDefault od zera do jednego lub jeśli wartość jest już ustawiona, od jednego do zera. Zero jest wartością domyślną w nowo zainstalowanym systemie. Po ustawieniu flagi ustawienie będzie się utrzymywać po ponownym uruchomieniu lub restarcie usługi WMI.
Skrypt używa obiektu SWbemMethod.InParameters oraz SWbemObject.ExecMethod, aby wywołać StdRegProv.GetStringValue i StdRegProv.SetStringValue. Aby uzyskać więcej informacji na temat ustawiania wartości w obiekcie InParameters, zobacz Tworzenie obiektów InParameters i analizowanie obiektów OutParameters. Aby zapoznać się z przykładem wywołania rejestru przy użyciu GetObject, zobacz StdRegProv.SetStringValue.
' Registry key value in hex
Const hklm = &h800000002
' Subkey string
Const Subkey = "software\\microsoft\\wbem\\cimom"
' Asynchronous access control
Const sValueName = "UnsecAppAccessControlDefault"
' Obtain registry object
Set objReg = GetObject("winmgmts:root\default:StdRegProv")
' Get the initial value of the asynchronous
' access control registry key
' Use an InParameters object to set up the
' parameters for the ExecMethod call
' For more information see Constructing InParameters Objects
' topic and SWbemObject.ExecMethod_ topic
Set InParams = objReg.methods_("GetStringValue").InParameters.SpawnInstance_
InParams.hDefKey = hklm
InParams.sSubKeyName = Subkey
InParams.sValueName = sValueName
' Get return value from OutParameters object returned by ExecMethod.
' For more information see Parsing OutParameters Objects topic
Set OutParams = objReg.Execmethod_("GetStringValue",InParams)
If (OutParams.ReturnValue <> 0) then
Wscript.Echo "GetStringValue returned " & OutParams.ReturnValue
Wscript.Quit 1
End If
Svalue = OutParams.sValue
If (sValue = 0) Then
AccessControl = "WMI not performing asynch access control"
Else
AccessControl = "WMI performing asynch access control"
End If
Wscript.Echo sValueName & " = " _
& sValue & VBNewLine & AccessControl
' Change asynchronous access control registry key value
Set InParams = objReg.methods_("SetStringValue").InParameters.SpawnInstance_
InParams.hDefKey = hklm
InParams.sSubKeyName = Subkey
InParams.sValueName = sValueName
InParams.sValue = sValue XOR 1
Set OutParams = objReg.ExecMethod_("SetStringValue",InParams)
If (OutParams.Returnvalue <> 0) Then
Wscript.Echo "SetStringValue returned " & OutParams.Returnvalue
Wscript.Quit 1
End If
Wscript.Echo SValueName & " changed to " & (sValue XOR 1)