Artigo: 313114 - Última revisão: sexta-feira, 18 de Maio de 2007 - Revisão: 5.4

Como criar um destinatário mailbox-enabled utilizando o Visual C#

Dica do SistemaEste artigo aplica-se a um sistema operativo diferente do que está a utilizar. Foi desactivado o conteúdo do artigo, que pode não ser relevante para si.

Nesta página

Expandir tudo | Reduzir tudo

Sumário

Este artigo passo a passo descreve como criar um utilizador mailbox-enabled com o espaço de nomes System.DirectoryServices e CDO para o Exchange Management (CDOEXM).

Requisitos

A lista seguinte descreve o hardware recomendado, software, infra-estrutura de rede e service packs que necessita:
  • Um domínio baseado no Microsoft Windows 2000 que tenha instalado o Microsoft Exchange 2000
  • Microsoft Visual C# 2005 ou Microsoft Visual C# .NET
  • Microsoft Exchange 2000 System Management Tools no computador em que este código é executado

Mais Informação

Criar um novo programa C#

  1. No Visual C# 2005 ou no Visual C#. NET, crie um novo C# consola programa denominado MBTest.
  2. No Solution Explorer, clique com o botão direito do rato em References e, em seguida, clique em Add Reference .
  3. No separador .NET , adicione uma referência de projecto ao espaço de nomes System.DirectoryServices .
  4. No separador COM , adicione uma referência à Microsoft CDO para gestão do Exchange .
  5. Substitua o código no ficheiro Class1.cs com o seguinte código.

    Nota No Visual C# 2005, substitua o código no ficheiro Program.cs em vez disso.
    using System;
    using CDOEXM;
    using System.DirectoryServices;
    
    namespace MBTest
    {
         class Class1
         {
              [STAThread]
              static void Main(string[] args)
              {
                   //TODO: Change these items to values for your domain or organization.
                   string defaultNC = "DC=yourdomain,DC=com";
                   string alias = "jsmith"; 
                   string fullName = "Joseph Smith";
                   string password = "TestMb123.";
                   string domainName = "yourdomain.com";
                   string homeMDB = "CN=Mailbox Store (Your Server),CN=Your Storage Group," 
                             + "CN=InformationStore,CN=Your Server,CN=Servers,"
                             + "CN=Your Administrative Group,CN=Administrative Groups,"
                             + "CN=Your Org,CN=Microsoft Exchange,CN=Services,"
                             + "CN=Configuration,DC=Yourdomain,DC=Com";
    
                   DirectoryEntry container, user;
                   CDOEXM.IMailboxStore mailbox;
    
                   //This creates the new user in the "users" container.
                   //Set the sAMAccountName and the password
                   container = new DirectoryEntry("LDAP://cn=users," + defaultNC);
                   user = container.Children.Add("cn=" + fullName, "user");
                   user.Properties["sAMAccountName"].Add(alias);
                   user.CommitChanges();
                   user.Invoke("SetPassword", new object[]{password});
                   
                   //This enables the new user.
                   user.Properties["userAccountControl"].Value = 0x200; //ADS_UF_NORMAL_ACCOUNT
                   user.CommitChanges();
    
                   //Obtain the IMailboxStore interface, create the mailbox, and commit the changes.
                   mailbox = (IMailboxStore)user.NativeObject;
                   mailbox.CreateMailbox(homeMDB);
                   user.CommitChanges();
    
                   return;
              }
         }
    }
    					
  6. Altere as variáveis na secção TODO a função principal de modo a contêm os valores correctos para o domínio.
  7. Compilar o projecto e, em seguida, execute o programa.
  8. Confirme se a nova conta foi criada no domínio, iniciando o snap-in computadores e utilizadores do Active Directory na consola de gestão da Microsoft. Verá o novo utilizador no contentor Users. Para verificar que este utilizador é mailbox-enabled, visualize as propriedades do utilizador e tenha em atenção que os separadores do Exchange são apresentados e listado um arquivo de caixa de correio para o utilizador no separador Geral do Exchange .

Descrição do código

Criar um novo DirectoryEntry

Este código demonstra como associar a um contentor (neste caso, o contentor Users) e como criar um novo utilizador no contentor. Não se esqueça de "cn =" entrada para o novo nome de utilizador.
container = new DirectoryEntry("LDAP://cn=users," + defaultNC);
user = container.Children.Add("cn=" + fullName, "user");
				

Definir propriedades de novo utilizador

  1. Atribua um valor para sAMAccountName . Este é um atributo obrigatório. A conta de utilizador não é criada se não especificar um valor.
  2. Uma vez que forneceu os atributos obrigatórios, chamada CommitChanges para guardar o novo utilizador no directório.
  3. Chame IADs::SetPassword para definir a palavra-passe. Terá de o fazer após uma chamada para CommitChanges .
  4. Permitir que o utilizador modificando o atributo userAccountControl .
    user.Properties["sAMAccountName"].Add(alias);
    user.CommitChanges();
    user.Invoke("SetPassword", new object[]{password});
                   
    //This enables the new user:
    user.Properties["userAccountControl"].Value = 0x200; //ADS_UF_NORMAL_ACCOUNT
    user.CommitChanges();
    				

Criar uma nova caixa de correio

  1. Para obter a interface IMailboxStore , converter DirectoryEntry.NativeObject deste tipo. Esta conversão não é bem sucedida em tempo de execução se CDOEXM não estiver instalado num computador.
  2. Chamar o método CreateMailbox e passar um nome distinto válido para um arquivo de caixa de correio na organização do Exchange.
  3. Chamar CommitChanges no DirectoryEntry para guardar a nova caixa de correio.
    //Obtain the IMailboxStore interface, create the mailbox, and commit the changes.
    mailbox = (IMailboxStore)user.NativeObject;
    mailbox.CreateMailbox(homeMDB);
    user.CommitChanges();
    				

Resolução de problemas

  • Tem de ter permissões adequadas no domínio para criar um utilizador e uma caixa de correio. Normalmente, para criar utilizadores mailbox-enabled num domínio baseado no Windows 2000, tem de ser membro do grupo Administradores de domínio do Windows 2000 para o domínio.
  • Se este código é executado num computador diferente um computador baseado no Exchange 2000 Server, tem de ter Exchange 2000 System Management Tools instalado no computador. Se não o fizer, CDOEXM não está disponível e a conversão para a interface IMailboxStore lança uma resposta InvalidCastException:
    Ocorreu uma excepção não processada do tipo 'System.InvalidCastException' no MBTest.exe
    Obter informações adicionais: especificada a conversão não é válida.
  • Se receber uma mensagem de erro na chamada para IMailboxStore.CreateMailbox , verifique se o parâmetro transmitido para este método é um arquivo de caixa de correio válido na organização. Se não estiver, receberá uma mensagem de erro semelhante à seguinte:
    Ocorreu uma excepção não processada do tipo 'System.Runtime.InteropServices.COMException' no MBTest.exe
    Obter informações adicionais: não estiver nenhum tal objecto no servidor.

Referências

Para obter mais informações sobre o espaço de nomes System.DirectoryServices , visite o seguinte Microsoft Developer Network (MSDN) Web site:
http://msdn2.microsoft.com/en-us/library/system.directoryservices(vs.71).aspx (http://msdn2.microsoft.com/en-us/library/system.directoryservices(vs.71).aspx)
Para obter mais informações sobre CDOEXM, visite o seguinte Web site da MSDN:
http://msdn2.microsoft.com/en-us/library/ms876280.aspx (http://msdn2.microsoft.com/en-us/library/ms876280.aspx)

A informação contida neste artigo aplica-se a:
  • Microsoft Visual C# 2005
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft Collaboration Data Objects for Exchange Management 1.1
  • Microsoft Exchange 2000 Server Standard Edition
  • Microsoft Exchange 2000 Enterprise Server
  • Microsoft Active Directory Client Extension
  • Microsoft Active Directory Service Interfaces 2.5
Palavras-chave: 
kbmt kbdswadsi2003swept kbhowtomaster KB313114 KbMtpt
Tradução automáticaTradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 313114  (http://support.microsoft.com/kb/313114/en-us/ )