Bu makalede, programlı olarak, Microsoft Exchange Aktarımı sağlayıcısının değerleri değiştirin ve sonra kaydedilmiş olan değişiklikleri gözden açıklar.
Microsoft Exchange Server hizmet sağlayıcının iki aşamaya bozuk için ayarları değiştirme: oluşturmak ve bir profili yapılandırma bazılarını veya tümünü Microsoft Exchange Server hizmeti sağlayıcısının ayarlarını değiştirme.
Oluşturma ve bir profil yapılandırma
Önce oluşturmak ve bir profili yapılandırmak için aşağıda listelenen adımları izleyin. (Bu adımlar, bu makaledeki "Bir profili yapılandırma ve oluşturma." "Microsoft Developer Network'üzerinde (MSDN) bulunabilir)
Her hizmet için üstbilgi dosyası okunamıyor. Yapılandırmanız gereken hangi özelliklerin anlamak ve hangi değerleri kullanır.
Bir IProfAdmin arabirimi MAPIAdminProfiles işlevini çağırın. Profilinizi oluşturmak için CreateProfile yöntemi ve IMsgServiceAdmin arabirim elde etmek için AdminServices yöntemini çağırın.
Ileti Hizmetleri profile ekleyin. Kullanmanız gereken siparişinin önceki yönergelere bakın. Her hizmet için IMsgServiceAdmin kullanmak arabirimini, aşağıdakileri yapın:
CreateMsgService yöntemini çağırın.
Oluşturduğunuz hizmet MAPIUID yapısı'nı edinin:
Bir ımapıtable edinme GetMsgServiceTable yöntemini arabirimi.
Tablodan tüm satırları almak için HrQueryAllRows işlevini çağırın.
PR_SERVICE_UID sütun son satırdan alın. Bu işlev, eklenen son hizmetin MAPIUID yapıdır. Diğer özellikleri hizmetin beklediğiniz gibi olan bir onaylama işlemi ile denetlemek isteyebilirsiniz.
Oluşturduğunuz hizmet MAPIUID yapısı ve yapılandırma özelliklerini bir özellik değeri diziyle ConfigureMsgService yöntemini çağırın.
Bir IMAPISession gerektiren yapılandırma arama yapmanız gereken, IMAPISession::SetDefaultStore, IAddrBook::SetPAB veya IAddrBook::SetABSearchPath, geçirmek gibi MAPI_NO_MAIL bayrağı MAPILogonEx işlevine arabirim.
Profilinizi geçici yapmak için <a0></a0>, the IProfAdmin::DeleteProfile arama profili için günlüğe kaydetme hemen sonra yöntemi. Oturumu kapatın ve bu arada diğer uygulamaları göremez sonra silinir.
Hizmeti Sağlayıcısı'nın ayarlarını değiştirme
Yukarıdaki adımları oluşturmak ve bir genel profil yapılandırması yardımcı oldu. Ikinci evrede bazılarını veya tümünü Microsoft Exchange Server hizmeti sağlayıcısının ayarlarını değiştirir. (Aşağıdaki adımları da MSDN'de "MAPı ile bir profil oluşturma" makalesinde bulunabilir)
Adımda ulaştığınızda, MAPI IMsgServiceAdmin::ConfigureMsgService yöntemi ça?r?l?r, lpProps parametresinde aşağıdaki bilgileri belirtin. Bu parametre, kullanıcıya özellik sayfasını görüntülemek için bu özelliklerin değerlerinin bulunduğu bir SPropValue yapısına yönelik bir işaretçidir.
Uygulamanın posta ev sunucusu. Özelliği kullanmak PR_PROFILE_HOME_SERVER etiketi. Bu özellik, EDKMDB.H içinde tanımlanır.
Özelliği kullanarak uygulamanın posta kutusunun adını PR_PROFILE_MAILBOX etiketi. Bu özellik, EDKMDB.H içinde tanımlanır.
Özet
Aşağıdaki, yukarıdaki adımları aşağıdaki pseudo-code benzer olan kod olmalıdır.
(Not: Profil yapılandırmak için PR_UNRESOLVE_XXX özelliklerini aşağıdaki pseudo-code kullanır. Genelde yukarıda özelliklerini kullanarak başarısız hizmetin beklendiği şekilde yapılandırılacak.)
IProfAdmin arabirim işaretçisi ile MAPIAdminProfiles() Al...
Yeni bir profil ile IProfAdmin::CreateProfile() oluşturun...
IMsgServiceAdmin arabirim işaretçisi ile IProfAdmin::AdminServices() Al...
Yeni oluşturulan profilin IMsgServiceAdmin::CreateMsgService() ile bir ileti hizmeti ekleme
IMsgServiceAdmin::GetMsgServiceTable() ile ileti hizmeti ileti hizmet tablosu
Ileti hizmet tablosu Microsoft Exchange Server hizmeti sağlayıcısında (MSEMS) HrQueryAllRows() temsil eden satır almak
PR_PROFILE_UNRESOLVED_NAME ve PR_PROFILE_UNRESOLVED_SERVER IMSgServiceAdmin::ConfigureMsgService() ile değerlerini ayarlayın.
Yeni bir MAPI oturum MAPILogonEx() ile yeni bir profil kullanarak oturum açma
Serbest bırakma ve yeniden IMsgService ve ımapıtable nesneleri
Yeni IMsgServiceAdmin arabirimi işaretçisi alınmaya
Ileti hizmet tablosu
MSEMS ileti hizmeti temsil eden bir satır bulun.
Hizmetin özellik sayfasını IMsgServiceAdmin::ConfigureMsgService ile açın...
Örnek kod
Aşağıdaki bir olası pseudo-code uygulamasıdır. Yalnızca bir örnek olduğu, ancak, Microsoft Exchange hizmeti sağlayıcısının çeşitli ayarlarını değiştirme ve bu değişikliklerin sonuçlarını görüntüleme tasarım hedeflerini karşılayan:
#include "windows.h"
#include "edk.h"
#include "stdio.h"
#include "d:\customer\makeprofile\makeprofile\makeprofile.h"
char g_lpszProfile[256];
STDMETHODIMP ChangeMSESPSettings ( LPSTR lpszProfile, HWND hWnd )
{
HRESULT hRes = S_OK;
LPPROFADMIN pProfAdmin = NULL;
LPSERVICEADMIN pSvcAdmin = NULL;
LPMAPITABLE pMsgSvcTable = NULL;
LPSRowSet pRows = NULL;
SPropValue rgval[2];
LPMAPISESSION pSession = NULL;
SRestriction sres;
SPropValue pSvcProps;
enum {iSvcName, iSvcUID, cptaSvc};
SizedSPropTagArray (cptaSvc, sptCols) = { cptaSvc,
PR_SERVICE_NAME,
PR_SERVICE_UID };
// Copy the profile name into a global variable.
strcpy ( g_lpszProfile, lpszProfile );
for ( int i = 0; i < 2; i++)
ZeroMemory ( &rgval[i], sizeof ( SPropValue ) );
// Get IProfAdmin interface pointer.
if ( FAILED ( hRes = MAPIAdminProfiles ( 0L, &pProfAdmin ) ) )
goto Quit;
// Create a new profile -- IProfAdmin::CreateProfile()
// If the attempt to create the profile fails, remove the
// profile.
if ( FAILED ( hRes = pProfAdmin -> CreateProfile ( lpszProfile,
"",
0L,
0L ) ) )
{
hRes = pProfAdmin -> DeleteProfile ( lpszProfile, 0L );
goto Quit;
}
printf("CreateProfile worked\n");
// Get IMsgServiceAdmin interface pointer.
if ( FAILED ( hRes = GetAdminService ( &pSvcAdmin, 0L ) ) )
goto Quit;
// Add a message service to the newly created profile.
if (FAILED(hRes = pSvcAdmin->CreateMsgService ( "MSEMS",
"Microsoft Exchange",
(ULONG)hWnd,
0L ) ) )
goto Quit;
// Get the message service table of the Message service.
if ( FAILED ( hRes = pSvcAdmin->GetMsgServiceTable(0L,
&pMsgSvcTable) ) )
goto Quit;
// Get the row from the message service table that represents the
// Microsoft Exchange Server service provider.
sres.rt = RES_CONTENT;
sres.res.resContent.ulFuzzyLevel = FL_FULLSTRING;
sres.res.resContent.ulPropTag = PR_SERVICE_NAME;
sres.res.resContent.lpProp = &pSvcProps;
pSvcProps.ulPropTag = PR_SERVICE_NAME;
pSvcProps.Value.lpszA = "MSEMS";
if ( FAILED ( hRes = HrQueryAllRows ( pMsgSvcTable,
(LPSPropTagArray)&sptCols,
&sres,
NULL,
0,
&pRows ) ) )
goto Quit;
// Set the values for PR_PROFILE_UNRESOLVED_NAME and
// PR_PROFILE_UNRESOLVED_SERVER
rgval[0].ulPropTag = PR_PROFILE_UNRESOLVED_NAME;
// rgval[0].Value.lpszA = <mailbox name> ;
rgval[0].Value.lpszA = "Karenwo";
rgval[1].ulPropTag = PR_PROFILE_UNRESOLVED_SERVER;
// rgval[1].Value.lpszA = <Exchange Server Name>;
rgval[1].Value.lpszA = "Karenwo";
if ( FAILED ( hRes = pSvcAdmin -> ConfigureMsgService(
(LPMAPIUID) pRows -> aRow->lpProps[iSvcUID].Value.bin.lpb,
0, NULL, 2, rgval ) ) )
hRes = pProfAdmin -> DeleteProfile ( lpszProfile, 0L );
// Logon to a new MAPI session using new profile -- MAPILogonEx()
if ( SUCCEEDED ( hRes = MAPILogonEx ( ( ULONG )hWnd,
lpszProfile,
"",
MAPI_NEW_SESSION |
MAPI_NO_MAIL, &pSession ) ) )
{
// Release and reuse IMsgService and IMAPITable
// objects.
pSvcAdmin -> Release ( );
pMsgSvcTable -> Release ( );
FreeProws ( pRows );
pSvcAdmin = NULL;
pMsgSvcTable = NULL;
pRows = NULL;
// Get new IMsgServiceAdmin interface pointer.
hRes = pSession -> AdminServices ( 0L, &pSvcAdmin );
// Get the Message service table.
if(FAILED(hRes = pSvcAdmin->GetMsgServiceTable ( 0L,
&pMsgSvcTable ) ) )
goto Quit;
// Find the row that represents the MSEMS message service.
if ( FAILED ( hRes = HrQueryAllRows (pMsgSvcTable,
(LPSPropTagArray)&sptCols,
&sres,
NULL,
0,
&pRows ) ) )
goto Quit;
// Open the property sheet for the service.
if ( FAILED ( hRes = pSvcAdmin -> ConfigureMsgService(
(LPMAPIUID) pRows -> aRow -> lpProps[iSvcUID].Value.bin.lpb,
0,
SERVICE_UI_ALLOWED |
SERVICE_UI_ALWAYS,
5,
rgval) ) )
goto Quit;
return hRes;
}
Quit:
if ( hRes )
hRes = pProfAdmin -> DeleteProfile ( lpszProfile, 0L );
if ( pMsgSvcTable )
{
FreeProws( pRows );
pRows = NULL;
pMsgSvcTable -> Release ( );
pMsgSvcTable = NULL;
}
if ( pSvcAdmin )
{
pSvcAdmin -> Release ( );
pSvcAdmin = NULL;
}
if ( pSession )
{
pSession -> Logoff ( (ULONG)hWnd, MAPI_LOGOFF_SHARED, 0L );
pSession -> Release ( );
pSession = NULL;
}
return hRes;
}
STDMETHODIMP GetAdminService ( LPSERVICEADMIN * lppSvcAdmin,
LPMAPISESSION m_pSession)
{
HRESULT hRes = S_OK;
LPSERVICEADMIN lpSvcAdmin = NULL;
LPPROFADMIN pProfAdmin = NULL;
if(NULL!=m_pSession)
hRes = m_pSession -> AdminServices ( 0L, &lpSvcAdmin );
else
hRes = MAPIAdminProfiles(0L, &pProfAdmin);
if ( SUCCEEDED ( hRes ) )
hRes = pProfAdmin -> AdminServices( g_lpszProfile, "", 0L, 0L,
&lpSvcAdmin );
else
return hRes;
if ( SUCCEEDED ( hRes ) )
*lppSvcAdmin = lpSvcAdmin;
return hRes;
}
Microsoft Exchange Server hizmet sağlayıcısı için profili sunucu ve posta kutusu özelliklerle görüntülenen ileti hizmeti özellik sayfasında, bu kod oluşur.
Makale numarası: 170225 - Son Gözden Geçirme: 18 Ağustos 2005 Perşembe - Gözden geçirme: 1.5
Bu makaledeki bilginin uygulandığı durum:
Microsoft Office Outlook 2007
Microsoft Messaging Application Programming Interface
Anahtar Kelimeler:
kbmt kbcode kbhowto kbmsg KB170225 KbMttr
Otomatik Tercüme
Ö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.