Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Para adquirir um bloqueio explícito em um objeto habilitado para SEDO
Criar uma instância da
SMS_ObjectLockclasse WMIObtenha o objeto method parameters para o
RequestLockmétodo.Atribua o caminho do objeto que você deseja bloquear à
ObjectRelPathpropriedade.Defina a
RequestTransferpropriedade comotrue.Crie uma instância de
InvokeMethodOptionsobjeto. Na propriedade Context, adicione um par nome/valor. O nome deve ser "ObjectLockContext" e o valor deve ser um valor exclusivo, como um Guid. Adicione outro par nome/valor com "MachineName" e o nome do computador que está solicitando o bloqueio.Chame InvokeMethod na
SMS_ObjectLockinstância.InvokeMethod retornará uma
SMS_ObjectLockRequestinstância. Verifique asRequestStatepropriedades andLockStatepara obter mais informações sobre o sucesso ou falha da solicitação.
Exemplo
O exemplo a seguir solicita um bloqueio explícito em uma instância de SMS_ConfigurationItem objeto.
class Program
{
static void Main(string[] args)
{
ManagementScope scope = new ManagementScope(@"\\siteservername\root\sms\site_ABC");
RequestLock(scope);
}
public static void RequestLock(ManagementScope scope)
{
ManagementPath path = new ManagementPath("SMS_ObjectLock");
ManagementClass objectLock = new ManagementClass(scope, path, null);
ManagementBaseObject inParams = objectLock.GetMethodParameters("RequestLock");
inParams["ObjectRelPath"] = "SMS_ConfigurationItem.CI_ID=30";
inParams["RequestTransfer"] = true;
InvokeMethodOptions options = new InvokeMethodOptions();
options.Context.Add("ObjectLockContext", Guid.NewGuid().ToString());
options.Context.Add("MachineName", "RequestingComputer");
ManagementBaseObject result = objectLock.InvokeMethod("RequestLock", inParams, options);
}
}
O objeto SMS_ObjectLockRequest contém as seguintes propriedades:
| Propriedade | Descrição |
|---|---|
| RequestID | Identificador exclusivo da solicitação. |
| ObjectRelPath | O caminho do objeto para o qual o bloqueio é solicitado. |
| RequestState | Indica o êxito ou a falha da solicitação. |
| LockState | Indica o estado atual do bloqueio solicitado. |
| AssignedUser | Indica o usuário atualmente atribuído do bloqueio solicitado. |
| AssignedObjectLockContext | Indica ObjectLockContext ao qual o bloqueio está atualmente atribuído. |
| AssignedMachine | Indica o computador atualmente atribuído do bloqueio solicitado. |
| AssignedSiteCode | Indica o local atual do bloqueio solicitado. |
| AssignedTimeUTC | Indica a hora em que o bloqueio solicitado foi atribuído. |
RequestState A tabela a seguir exibe os possíveis valores de estado da solicitação. Os estados de solicitação Granted, GrantedAfterTimeout e GrantedLockWasOrphaned indicam uma solicitação bem-sucedida e o usuário pode fazer e salvar modificações no objeto. Todas as outras solicitações indicam erro.
| RequestStateID | RequestStateName |
|---|---|
| 0 | Desconhecido |
| 2 | Solicitado |
| 3 | RequestedCanceled |
| 4 | ResponseReceived |
| 10 | Concedido |
| 11 | GrantedAfterTimeout |
| 12 | GrantedLockWasOrphaned |
| 20 | DeniedLockAlreadyAssigned |
| 21 | DeniedInvalidObjectVersion |
| 22 | DeniedLockNotFound |
| 23 | DeniedLockNotLocal |
| 24 | DeniedRequestTimedOut |
| 50 | Erro |
| 52 | ErrorRequestNotFound |
| 53 | ErrorRequestTimedOut |
LockState A tabela abaixo exibe os possíveis valores de estado de bloqueio.
| LockStateID | LockStateName |
|---|---|
| 0 | Não atribuído |
| 1 | Atribuído |
| 2 | Solicitado |
| 3 | PendingAssignment |
| 4 | Tempo expirado |
| 5 | NotFound |
Compilando o código
O exemplo do C# requer:
Namespaces
Sistema
System.Management
Assembly
Programação robusta
Para obter mais informações sobre o tratamento de erros, consulte Sobre erros do Configuration Manager.