Bu adım adım makalede, bir posta kutusu etkin kullanıcı System.DirectoryServices ad ve CDO kullanarak Exchange Management (CDOEXM) için nasıl oluşturulacağını açıklar.
Gereksinimler
Aşağıdaki listede, gereksinim duyacağınız donanım, yazılım, ağ altyapısı ve hizmet paketleri önerilmektedir:
Microsoft Exchange 2000 yüklü olan Microsoft Windows 2000 tabanlı bir etki alanı
Microsoft Visual C# 2005 veya Microsoft Visual C# .NET
Bu kod çalıştığı bilgisayarda Microsoft Exchange 2000 sistem yönetim araçları
Visual C# 2005 veya Visual C# .NET, yeni bir C# oluşturma MBTest adlı konsol program.
Solution Explorer'da (Çözüm Gezgini), Başvurular ' ı sağ tıklatın ve sonra Add Reference</a1>'ı tıklatın.
.NET</a0> sekmesinde bir proje başvurusu System.DirectoryServices ad alanını ekleyin.
COM</a0> sekmesinde, Microsoft CDO for Exchange Management başvuru ekleyin.
Class1.cs dosyasındaki kodu aşağıdaki kodla değiştirin.
Not Visual C# 2005'te program.cs dosyasındaki kod yerine yerini.
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;
}
}
}
Ana işlevi YAPıLACAK bölümünde değişkenleri değiştirir, böylece etki alanınız için doğru değerler içerirler.
Projeyi derlemek ve programı çalıştırın.
Yeni hesabın Active Directory Kullanıcıları ve Bilgisayarları ek bileşenini Microsoft Yönetim Konsolu'nu (MMC) başlayarak etki alanında oluşturulduğunu doğrulayın. Yeni bir kullanıcı <a0>Kullanıcılar</a0> kapsayıcısındaki görürsünüz. Bu kullanıcının posta kutusu etkin olduğunu doğrulamak için <a0></a0>, kullanıcının özelliklerini ve Exchange sekmeler görüntülenir ve Exchange genel</a0> sekmesinde kullanıcının bir posta kutusu deposunun listelenen Not görüntüleyin.
Kod açıklaması
Yeni bir DirectoryEntry oluşturma
(Bu durumda, kullanıcılar kapsayıcısı) bir kapsayıcıya bağlamak ve kapsay?c? içinde yeni bir kullanıcı oluşturmak, bu kodu gösterir. Unutma "cn =" yeni kullanıcı adı için bir giriş.
container = new DirectoryEntry("LDAP://cn=users," + defaultNC);
user = container.Children.Add("cn=" + fullName, "user");
Yeni kullanıcı özelliklerini ayarlama
SAMAccountName için bir değer atayın. Bu zorunlu bir özniteliğidir. Bir değer belirtmezseniz, kullanıcı hesabı oluşturulur.
Sağladığınız zorunlu öznitelikleri olduğundan, yeni kullanıcı dizine kaydetmek için CommitChanges arayın.
Parola ayarlamak için IADs::SetPassword arayın. Bunu bir ça?r? CommitChanges sonra yapmanız gerekir.
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();
Yeni bir posta kutusu oluşturma
IMailboxStore arabirimi almak için <a0></a0>, bu tür için DirectoryEntry.NativeObject atama. CDOEXM bir bilgisayarda yüklü değilse, bu atama çalışma zamanında başarılı olmaz.
CreateMailbox yöntemini ve geçerli bir ayırt edici ad, Exchange kuruluşunuzdaki bir posta kutusu deposuna geçirmek.
CommitChanges yeni posta kutusu kaydetmek için DirectoryEntry üzerinde çağırın.
//Obtain the IMailboxStore interface, create the mailbox, and commit the changes.
mailbox = (IMailboxStore)user.NativeObject;
mailbox.CreateMailbox(homeMDB);
user.CommitChanges();
SORUN GİDERME
Etki alanındaki bir kullanıcı tarafından ve posta kutusu oluşturmak için uygun izinleriniz olmalıdır. Genellikle, Windows 2000 tabanlı bir etki alanında posta kutusu etkin kullanıcıların oluşturmak için <a0></a0>, etki alanı için Windows 2000 etki alanı yöneticileri grubunun bir üyesi olması gerekir.
Bu kod, Exchange 2000 Server tabanlı bir bilgisayarda farklı bir bilgisayarda çalıştırılırsa, Exchange 2000 Sistem Yönetim Araçları yüklü olmalıdır. Bunu yapmazsanız, CDOEXM kullanılamaz ve IMailboxStore arabirimine dönü?türme ınvalidcastexception yanıtının atar:
Içinde MBTest.exe 'System.InvalidCastException' türünde işlenmeyen bir özel durum oluştu Ek bilgi: dönü?türme geçersiz belirtildi.
IMailboxStore.CreateMailbox çağrısı bir hata iletisi alırsanız, bu yönteme geçilen parametre bir kuruluşunuzun geçerli posta kutusu deposunda olduğunu doğrulayın. Yüklü değilse, aşağıdakine benzer bir hata iletisi alırsınız:
Içinde MBTest.exe 'System.Runtime.InteropServices.COMException' türünde işlenmeyen bir özel durum oluştu Ek bilgi: sunucuda böyle bir nesne yok.
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Teşekkürler! Görüşleriniz, destek içeriğimizi geliştirmemize yardımcı olmak için kullanılmaktadır. Diğer yardım seçenekleri için, lütfen Yardım ve Destek Giriş Sayfasını ziyaret edin.