CLSID Key

Windows Mobile SupportedWindows Embedded CE Supported

9/8/2008

Um CLSID é um identificador exclusivo que identifica um objeto classe COM. Se seu servidor ou contêiner permite vincular à sua incorporado objetos, em seguida, você precisa registrar uma CLSID para com suporte cada classe de objetos. O CLSID é armazenado sob a seguinte chave Registro:

HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID = <CLSID>

O valor CLSID especifica um nome que pode ser exibido na interface de usuário. O valor CLSID contém informações usadas pelo manipulador de COM usar como padrão para retornar informações sobre uma classe quando ele estiver em execução a estado. Para obter um CLSID para seu aplicativo, você pode usar CoCreateGuid. O CLSID é um 128-bit número, escrito em hexadecimal formato, em um par de chaves.

A seguinte tabela mostra o nomeado valores para o {HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\CLSID} chave.

Valor : tipo Descrição

\< CLSID > = HumanReadableName

Um identificador exclusivo (GUID) usado para informações mapa (n.); mapear (v.) sobre uma classe componente. A entrada valor Especifica um nome legível humano que pode ser exibido na interface de usuário.

COM usa as informações mapeadas pelo CLSID para localizar e criar uma instância de objeto associado com a CLISID.

\AppID = < CLSID >

Associa um CLSID um identificador aplicativo (AppID).

\AutoConvertTo = <CLSID>

Especifica a conversão automática de uma determinada classe de objetos (ClsidOld) para uma nova classe de objetos (pClsidNew). A entrada valor contém o identificador classe do objeto ao qual um determinado objeto ou classe de objetos deve ser convertido.

Essa chave é geralmente usada para automaticamente converter arquivos criados por um versão anterior de um aplicativo para uma versão mais recente do aplicativo.

\AutoTreatAs = <CLSID>

Define automaticamente o CLSID para a TreatAs chave para o valor especificado. A entrada valor especifica o CLSID que será automaticamente ser atribuída ao TreatAs entrada.

\Control

Identifica um objeto como um controle ActiveX. Este opcional entrada é usada pelo recipientes para preencher caixas diálogo. O contêiner usa esse nomeado valor para determinar se deve incluir um objeto em uma caixa diálogo que exibe ActiveX Controls. Um controle pode omitir esta entrada se tiver sido projetado apenas para trabalho com um contêiner específico e, portanto, não precisa a ser inserido em outros recipientes.

\DefaultIcon = < caminho completo para exe, ID recurso >

Fornece informações ícone usar como padrão para apresentações icônico de objetos. Esse valor especifica o caminho completo para o nome executável do aplicativo de objeto e o índice recurso do ícone dentro o executável.

DefaultIcon Identifica o ícone para usar quando, de exemplo, um controle é minimizada para um ícone. Essa entrada contém o caminho completo para o nome executável do aplicativo de servidor e o índice recurso do ícone dentro o executável. Os aplicativos podem usar as informações fornecidas pelo DefaultIcon Para obter um identificador ícone com o ExtractIconEx função.

O seguinte exemplo de código mostra as configurações para este valor:

HKEY_CLASSES_ROOT\CLSID\{00000402-0000-0000-C000-000000000046} 
\DefaultIcon = c:\samp\isvrotl.exe,0 

\InprocHandler32 = < handler.dll >

Registra um 32-bit manipulador DLL. Esse valor especifica o personalizado manipulador usado pelo aplicativo.

Se um personalizado manipulador não for usada, a entrada deve ser definida para Ole32.dll, conforme o seguinte exemplo.

HKEY_-CLASSES_ROOT\CLSID\{00000402-0000-0000-C000-000000000046} 
\InprocHandler = ole32.dll 

Se um contêiner está procurando o Registro para um InprocHandler, os 16 - bit versão tem prioridade com de 16-bit contêiner e de 32 - bit versão tem prioridade com um 32 - bit contêiner.

\InprocServer32 = <caminho para 32-bit servidor InProc>\ThreadingModel = <segmento modelo>

Registra um 32-bit in-process server DLL e especifica o modelo de segmento do compartimento de servidor pode executar no.

O <caminho para 32-bit servidor InProc> valor Especifica o caminho para a 32-bit in-process server.

O <modelo de segmento> valor especifica o modelo de segmento do compartimento de servidor pode executar no. No-processo servidores são carregados em um compartimento existente e portanto não chamar CoInitialize Ou CoInitializeEx; Eles devem usar o Registro para especificar modelo de segmento de um aplicativo. Os valores permitidos são:

  • ThreadingModel = apartment. Segmento único compartimento.
  • ThreadingModel = ambos. Segmentação única ou de vários segmentos compartimento.
  • ThreadingModel = livre. Compartimento com vários segmentos.
  • ThreadingModel = Neutral. Compartimento neutro (disponível em Windows 2000).

Se a pasta ThreadingModel chave não estiver no Registro ou nenhum valor for inserido para ele, o servidor é carregado no compartimento primeiro que foi inicializado no processo. Este apartamento às vezes é conhecido como o principal apartamento segmentação única (STA). Se o primeira STA em um processo é inicializada por COM, em vez de um chamar explícita para CoInitialize Ou CoInitializeEx, é chamado de hospedar STA. COM cria uma hospedar STA, de exemplo, se um in-process server a ser carregado requer uma STA mas não há atualmente nenhuma sta no processo.

O ThreadingModel valor deve ser o mesmo para todos os objetos fornecidos por um in-process server.

Sempre que possível, o in-process server é carregado no mesmo compartimento como o cliente que carrega. Se o modelo de segmento do compartimento de cliente não é compatível com o modelo especificado pelo ThreadingModel valor da InprocServer32 chave, o servidor é carregado da seguinte maneira:

  • Livre modelo de segmento = executa servidor do apartamento em de vários segmentos apartamento
  • Neutro modelo de segmento = apartamento servidor executa no compartimento neutro
  • Ambos = apartamento servidor executa no mesmo compartimento como cliente
  • Se esse valor é não especificado, o STA principal se aplica.

Se a modelo de segmento do servidor é Compartimento, o compartimento de servidor é carregado no depende de como o compartimento o cliente está em execução. A seguinte lista mostra as possíveis dependências entre cliente e servidor apartments:

  • Com vários segmentos apartamento servidor executa no host STA =
  • Neutro (em segmento STA) = apartamento servidor executa no mesmo compartimento como cliente
  • Neutro (no segmento MTA) = executa servidor do apartamento em Sta host

COM também pode criar um hospedar de vários segmentos Apartment (MTA). Se um cliente em um compartimento Single-threaded solicita um in-process server cujo modelo de segmento Livre Quando houver não MTA no processo, COM cria uma hospedar MTA e carrega o servidor para ele.

Para um 32-bit in-process server, o InprocHandler32, InprocServer, InprocServer32, e Inserível As chaves devem ser registradas. O InprocServer entrada é necessária somente para compatibilidade com versões anteriores. Se ele estiver faltando, a classe será trabalho ainda, mas não pode ser carregado em 16-bit aplicativos.

Se um contêiner está procurando o Registro para um in-process server, o 16 - bit versão tem prioridade com de 16-bit contêiner e de 32 - bit versão tem prioridade com um 32 - bit contêiner.

\Interface \< IID > = < Nome de interface1 > \< IID > = < Nome de interface2 > \...

Um opcional que especifica interface todas as identificações (IIDs) de entrada com suporte pelo associado classe. Os valores para essa chave especificar as interfaces com suporte por esta classe. Se um nome interface não está presente nessa lista, a interface não pode nunca ser com suporte por uma instância desta classe.

\LocalServer32 = <caminho completo >

Especifica o caminho completo para um 32-bit local aplicativo servidor. Esse valor também pode incluir linha de comando argumentos.

COM acrescenta o " - Embedding " sinalizador para o seqüência de caracteres, portanto, o aplicativo que usa sinalizadores será necessário analisar a toda seqüência de caracteres e verificar para o - sinalizador Embedding. O seguinte exemplo de código mostra a configuração para este valor.

HKEY_CLASSES_ROOT\CLSID\{00000402-0000-0000-C000-000000000046} 
\LocalServer32 = c:\samp\isvrotl.exe 

Quando COM for iniciado um 32-bit local servidor, o servidor deve registrar um objeto classe dentro uma tempo decorrido definido pelo usuário. By default, the elapsed time value must be at least five minutes, entered in milliseconds, but cannot exceed the number of milliseconds in 30 days. Os aplicativos geralmente não configure esse valor. Esse valor está na HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\COM2\ServerStartElapsedTime entrada.

O exigido entradas de 32-bit local servidores são InprocHandler32, LocalServer, LocalServer32, e Inserível.

Se um contêiner está procurando o Registro para um local servidor, um 32-bit local servidor tem prioridade sobre um 16-bit local servidor.

\ProgID = < programático identificador >

Identificador programático para uma classe. Esse valor especifica o ProgID: <fornecedor>.<Microsoft.IIsScriptHelper>. < versão >.

Cada classe objeto inserível tem um <ProgID >.

\TreatAs = < CLSID >

Especifica o CLSID de uma classe que pode emular a atual classe.

Emulação é a capacidade de um aplicativo para aberto e editar um objeto de uma classe diferente, mantendo o original formato do objeto.

\Verb = \1 = < verb1 > \2 = < verb2 > \3 =

Especifica os verbos a ser registrado para um aplicativo.

Cada valor Especifica um verbo e seu associado sinalizadores menu e verbo. Cada verbo é especificado pelo seu próprio NamedValue / Valor par, como em número verbo = <Nome, menu sinalizador, sinalizador verbo> Por exemplo: \Verbo  0 = & editar, 0, 2 / / primário verbo; No menu, possivelmente dirties objeto, 1 = & executar, 0, 3 / / Outro verbo; No menu; objeto deixa limpar-3 = ocultar, 0, 1 / / verbo pseudo, oculta janela; Não no menu, OPT. -2 = Abrir, 0, 1 / / verbo pseudo, abre no sep. janela; Não no menu, OPT. -1 = Slides, 0, 1 / / verbo pseudo, apresentação em preferencial estado; Não no menu, OPT.

Para informações gerais sobre os verbos, as descrições de COM predefinidos verbos e verbos positivos e negativos, bem como outros materiais, consulte IOleObject.

Verbos devem ser numerados consecutivamente. O primeiro valor após o seqüência de caracteres verbo descreve como o verbo é acrescentado por um AppendMenu chamada de função.

O segundo valor indica se o verbo será Dirty o objeto. Ele também indica se o verbo deve aparecer no menu, conforme definido pela enumeração COMVERBATTRIB, usada pela estrutura COMVERB.

Para obter mais informações, consulte IOleObject::EnumVerbs e OleRegEnumVerbs.

O seguinte codificar exemplos apresentação dois exemplo entradas:

Verb 0: "Edit", MF_UNCHECKED | MF_ENABLED, no COMVERATTRIB flags: 
HKEY_CLASSES_ROOT\CLSID\{00000402-0000-0000-C000-000000000046} 
\Verb\0 = &Edit,0,0 
Verb 1: "Open", MF_UNCHECKED | MF_ENABLED, no COMVERATTRIB flags: 
HKEY_CLASSES_ROOT\CLSID\{00000402-0000-0000-C000-000000000046} 
\Verb\1 = &Open,0,0 

\Version = < VersionNumber >

Especifica o número versão do controle.

Número de versão deve corresponder a versão da biblioteca de tipo associado com o controle.

See Also

Concepts

COM and DCOM Registry Settings
COM and DCOM Security

Other Resources

Component Services (COM and DCOM)
Enhancing the Security of a Device