2012-03-21 61 views
0

我有一个C#(Visual Studio 2010)应用程序来管理Microsoft Active Directory中的对象。如果我想创建一个邮箱用户启用我在这一点上得到一个InvalidCastException:当在活动目录中创建启用邮箱的用户时发生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服务器上开发。这就是为什么我安装了Exchange管理工具。但不幸的是,这个错误仍然存​​在

任何人都可以帮到我吗?

在此先感谢。

+0

您的代码调用'(IMailboxStore)NewUser'而不是'(IMailboxStore)NewUser.NativeObject' – 2012-03-24 17:05:33

+0

感谢您的回复。我也试过你的版本,但我得到了同样的错误。 – Martin 2012-03-25 07:17:04

+0

你是如何得到你的互动的?您是否在运行代码的机器上安装了“Exchange Management 组件”? – 2012-03-25 16:05:02

回答

0

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

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

相关问题