在Active Directory中创建启用邮箱的用户时出现InvalidCastException

时间:2012-03-21 10:40:42

标签: c# active-directory exchange-server

我有一个C#(Visual Studio 2010)应用程序来管理Microsoft Active Directory中的对象。如果我想创建一个启用邮箱的用户,我此时会收到InvalidCastException:

IMailboxStore mailbox = (IMailboxStore)NewUser.NativeObject;

这是我的完整代码:

public void CreateUser(string Path,
                       string sAdminUserName,
                       string sAdminUserPassword,
                       string LastName,
                       string FirstName,
                       string sUserName,
                       string sUserPassword,
                       string sHomeMDB)
{
    DirectoryEntry dirEntry = new DirectoryEntry(Path, sAdminUserName, sAdminUserPassword);
    DirectoryEntry NewUser = dirEntry.Children.Add("CN=" + LastName + "." + FirstName, "user");

    NewUser.Properties["samAccountName"].Value = sUserName;

    NewUser.CommitChanges();
    NewUser.Invoke("SetPassword", new object[] { sUserPassword});
    NewUser.Properties["userAccountControl"].Value = 0x200;
    NewUser.CommitChanges();

    try
    {
        IMailboxStore mailbox = (IMailboxStore)NewUser;
        mailbox.CreateMailbox(sHomeMDB);
        NewUser.CommitChanges();
    }
    catch (InvalidCastException e)
    {
        MessageBox.Show(e.Message.ToString());
    }
}

我正在开发一个不是交换服务器的客户端。这就是我安装Exchange管理工具的原因。但遗憾的是,这个错误仍然存​​在。

任何人都可以帮助我?

提前致谢。

1 个答案:

答案 0 :(得分:0)

虽然这个问题已经很久了,但我想发布一个我刚才发现的问题的解决方案。也许这可以帮助其他人解决同样的问题。

在项目属性中 - >配置管理器 - > Active Solution Platform我选择了64位平台。这就是问题发生的原因。 IMailboxStore接口对于64位不存在。所以我已将设置更改回32位,错误消失了。