Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
A propriedade HostingModel na instância __Win32Provider que representa seu provedor especifica o modelo de hospedagem do provedor. A configuração dessa propriedade faz com que o provedor seja carregado em um processo de host compartilhado que tenha um nível especificado de privilégio.
Processo de host de provedor compartilhado
O WMI reside em um host de serviço compartilhado com vários outros serviços. Para evitar parar todos os serviços quando um provedor falha, os provedores são carregados em um processo de host separado chamado "Wmiprvse.exe". Mais de um processo com esse nome pode estar em execução. Cada um pode ser executado em uma conta diferente com segurança variável. Lembre-se de que, a partir do Windows Vista, use o comando winmgmt para executar o WMI em um processo separado sozinho usando uma porta fixa. Para obter mais informações, consulte Conectando-se ao WMI remotamente a partir do Vista.
O host compartilhado pode ser executado em uma das seguintes contas do sistema em um processo de host Wmiprvse.exe:
Um provedor também pode ser um servidor COM local (.exe) ou auto-hospedado, que não requer um host de provedor WMI.
Definindo o modelo de hospedagem
Como LocalSystem é uma conta privilegiada, é recomendável que você defina HostingModel para NetworkServiceHost quando um provedor estiver sendo executado em um processo de Wmiprvse.exe. A conta NetworkServiceHost é para serviços que não exigem privilégios extensos, mas precisam se comunicar remotamente com outros sistemas.
Se você não definir um valor para a propriedade HostingModel, o WMI definirá um valor padrão de NetworkServiceHostOrSelfHost. Se o valor HostingModel estiver definido como LocalSystemHost, o WMI usará o rastreamento para gerar os eventos 5603 e 5604 no Log de Eventos do Windows. Como a conta local LocalSystem é altamente privilegiada, essa configuração não é recomendada. Pode ver estes eventos no Visualizador de Eventos. Para obter mais informações, consulte Tracing WMI Activity.
Defina a propriedade HostingModel para provedores dissociados como "Decoupled:Com". Os provedores criados pela adição de classes de instrumentação de Microsoft.Management.Infrastructure no .NET Framework são provedores dissociados. ( System.Management.Instrumentation não é mais suportado.) Para obter mais informações sobre como criar um provedor dissociado, consulte incorporando um provedor em um aplicativo.
O modelo de hospedagem é especificado na propriedade HostingModel na instância __Win32Provider que representa seu provedor.
Para definir o modelo de hospedagem para um provedor
No arquivo MOF que define seu provedor, crie uma instância de __Win32Provider.
Atribua um nome ao provedor na propriedade Name e atribua o identificador de classe (CLSID) do objeto COM do provedor à propriedade Clsid.
O exemplo de código a seguir atribui um nome à propriedade Name e ao CSLID do objeto COM do provedor à propriedade Clsid.
Instance of __Win32Provider as $NewProvider { Name = "MyProvider"; Clsid = "{.......}"; }Atribua o valor de host compartilhado apropriado à propriedadeHostingModel. Valores de host compartilhados, como "NetworkServiceHost" são definidos na propriedade HostingSpecification de MSFT_Providers classe.
O exemplo de código a seguir atribui um valor de host compartilhado à propriedadeHostingModel.
HostingModel = "NetworkServiceHost";
O exemplo de código a seguir mostra como registrar um provedor em NetworkServiceHost.
Instance of __Win32Provider as $NewProvider
{
Name = "MyProvider";
Clsid = "{.......}";
HostingModel = "NetworkServiceHost";
}
Se você tiver vários provedores, poderá agrupá-los em um host de serviço específico registrando seu provedor para que ele resida na instância específica.
O exemplo de código a seguir também registra um provedor em NetworkServiceHost. A classe MSFT_Providers define valores para os dois valores que se combinam para criar a propriedade__Win32Provider HostingModel. No exemplo, o valor "NetworkServiceHost" vem da propriedade HostingSpecification de MSFT_Providers e "LocalServiceHost" vem da propriedade HostingGroup.
Instance of __Win32Provider as $NewProvider
{
Name = "MyProvider";
Clsid = "{.......}";
HostingModel = "NetworkServiceHost:MySharedHost";
}
Existem problemas especiais de desenvolvimento para provedores que não são dissociados e são hospedados no processo Wmiprvse. Para obter mais informações, consulte Debugging Providers.
Se você estiver escrevendo um provedor que contenha registro de provedor de propriedade ou classe, nem todos os modelos de threading funcionarão. Para obter mais informações, consulte Escolhendo o registro correto.
Valores HostingModel para provedores de In-Process
A lista a seguir lista os valores do modelo de hospedagem do provedor a serem usados na instância __Win32Provider para provedores que são executados em um processo de Wmiprvse.exe.
| Valor em __Win32Provider.HostingModel | Descrição |
|---|---|
| SelfHost | O provedor começa a usar a implementação do servidor local em vez de em processo. O contexto de segurança do processo no qual o provedor é executado determina o contexto de segurança do provedor. |
| LocalSystemHost | O provedor, se implementado como em processo, é carregado em um host de provedor compartilhado em execução sob contexto LocalSystem. A partir do Windows Vista, LocalSystemHost não será mais o modelo de hospedagem padrão se aHostingModelde um provedor WMI (__Win32Provider.HostingModel propriedade) não for especificada. Para obter mais informações, consulte Segurança de modelos de hospedagem. |
| LocalSystemHostOrSelfHost | O provedor é auto-hospedado ou carregado no processo de Wmiprvse.exe em execução na conta LocalSystem. Como LocalSystem é uma conta altamente privilegiada, uma entrada é gerada no log de eventos do Security NT para notificar os administradores de um provedor em execução nesse status confiável. |
| NetworkServiceHost | O provedor, se implementado como em processo, é carregado no processo de Wmiprvse.exe em execução em conta NetworkService. A partir do Windows Vista, este é o modelo de hospedagem padrão se aHostingModelde um provedor WMI (__Win32Provider.HostingModel propriedade) não for especificada. Para obter mais informações, consulte Segurança de modelos de hospedagem. NetworkServiceHost tem privilégios limitados e, portanto, reduz a possibilidade de um ataque de elevação de privilégio. Se o provedor operar apenas dentro do computador local, defina a propriedade HostingModel como LocalServiceHost. |
| NetworkServiceHostOrSelfHost | O provedor é auto-hospedado ou carregado no processo de WmiPrvse.exe em execução na conta NetworkService. NetworkServiceHostOrSelfHost é a configuração padrão quando a propriedade HostingModel no __Win32Provider é NULL. Como NetworkServiceHostOrSelfHost é o padrão, os provedores de sistemas operacionais anteriores podem continuar a trabalhar no Windows Vista, Windows Server 2008 e sistemas operacionais posteriores. |
| LocalServiceHost | O provedor, se implementado como em processo, é carregado no processo de Wmiprvse.exe em execução na conta LocalService. Este é o modelo de hospedagem recomendado para serviços porque LocalService tem privilégios limitados. |
Valores HostingModel para provedores dissociados
A lista a seguir lista os valores do modelo de hospedagem do provedor para provedores dissociados.
-
Desacoplado:Com
-
O provedor é um provedor dissociado hospedado em um processo separado que é um cliente para WMI.
O exemplo a seguir mostra o especificador FoldIdentity para a propriedadeHostingModel definida como FALSE, que permite que o provedor represente o cliente.
Decoupled:Com:FoldIdentity(FALSE)Se FoldIdentity não for especificado, o valor FoldIdentity será definido como TRUE por padrão. Por motivos de segurança, é recomendável que você não especifique FoldIdentity(FALSE), pois um aplicativo não autorizado com representação de Delegate pode afetar um domínio inteiro.
O exemplo a seguir mostra o HostingModel propriedade definida da maneira recomendada que é equivalente à configuração FoldIdentity(TRUE).
Decoupled:Com -
Desacoplado:Noncom
-
Apenas para uso interno. Não suportado.
Segurança dos Modelos de Alojamento
Para a maioria das situações, LocalSystem é desnecessário e o contexto de NetworkServiceHost é mais apropriado. A maioria dos provedores WMI deve representar o contexto de segurança do cliente para executar as operações solicitadas em nome do cliente WMI. A começar pelo Windows Vista, um provedor WMI que não possui uma definição de modelo de hospedagem e é executado como se estivesse sendo executado sob LocalSystem não será executado corretamente. Para corrigir essa situação, altere o modelo de hospedagem esperado e certifique-se de que o código do provedor WMI execute as operações no contexto de segurança do cliente representando o cliente WMI. LocalSystem raramente é um requisito. Se o seu provedor deve ter esse nível de privilégio, especifique o modelo de hospedagem com a seguinte instrução no arquivo MOF.
HostingModel=LocalSystemHost
Tópicos relacionados
-
Manutenção do de segurança WMI