Všeobecná mylná predstava je, že klienta MAPI, ako je napríklad program Microsoft Outlook alebo Exchange Client, musí byť nainštalovaný na serveri Microsoft Exchange Server vytvoriť MAPI profily. Inštalácia klienta MAPI z tohto dôvodu je zbytočné. Pre program Outlook, neodporúčame, aby ste nainštalovali klienta MAPI na výrobu serverov. Tak dlho, ako je nainštalovaný MAPI subsystému, rôzne iné spôsoby existujú vytvoriť MAPI profily. Výmenou, je nainštalovaný MAPI subsystému.
Metódy vytvárania MAPI profily
Spoločnosť Microsoft poskytuje príklady programovacieho základňa, bez ľubovoľnej vyjadrenej alebo implicitnej záruky. To zahŕňa, ale nie výhradne, implikovaných záruk obchodovateľnosti alebo vhodnosti na konkrétny účel. Tento článok predpokladá, že ovládate predvádzaný programovací jazyk a nástroje, ktoré sa používajú na vytváranie a ladenie procedúr. Pracovníci technickej podpory spoločnosti Microsoft môžu pomôcť vysvetliť funkčnosť konkrétny postup, ale nie modifikuje tieto príklady poskytovať pridanú funkčnosť alebo výstavbe postupy splniť vaše konkrétne požiadavky.
Predtým, ako sa pokúsite jednej z týchto metód, budete musieť skontrolujte, či správne zápisy v súbore Mapisvc.inf na serveri.Ďalšie informácie o tom, ako upraviť tento súbor, po kliknutí na nasledovné číslo článku databázy Microsoft Knowledge Base:
294470
(http://support.microsoft.com/kb/294470/
)
Ako pridať položky pre služby pri výmene Mapisvc.inf
Použiť NewProf.exe
NewProf.exe pomôcka je súčasťou programu Outlook. Ďalšie informácie o použití tejto pomôcky získate na webovej lokalite Microsoft Developer Network (MSDN):
Ďalšie informácie získate po kliknutí na nasledovné číslo článku databázy Microsoft Knowledge Base:
145905
(http://support.microsoft.com/kb/145905/
)
Možnosti príkazového riadka Newprof.exe
148664
(http://support.microsoft.com/kb/148664/
)
Opis profilu popisovača súboru
Použite ProfMan2 vzorku
Táto vzorka používa rozhranie MAPI IProfAdmin, ktoré je spomenuté v sekcii "Použiť rozhranie MAPI IProfAdmin". Na získanie tejto vzorky, po kliknutí na nasledovné číslo článku databázy Microsoft Knowledge Base:
228736
(http://support.microsoft.com/kb/228736/
)
Profman2.exe - MAPI
Profil manažéra v2.0
Použiť funkciu MAPILogonEx
Keď zavoláte
MAPILogonEx Funkcia bez špecifikovania profil a nastavením MAPI_LOGON_UI vlajkou, MAPI zobrazí Sprievodcu profilmi vytvorenie ak žiadne profily sú v počítači. Ak sú profily MAPI zobrazí
Vyberte profil dialógové okno. Kliknite na tlačidlo
Nové Spustite Sprievodcu vytvorenie profilu.
Vzorky kód
// CreateProfileWithMAPILogonEx function: This takes advantage of the
// profile prompt dialog's "New" button.
bool CreateProfileWithMAPILogonEx()
{
HRESULT hRes = S_OK; // Return code from MAPI calls.
LPMAPISESSION lpSession = NULL; // MAPI Session pointer.
// Initialize MAPI.
if (FAILED(hRes = MAPIInitialize(NULL)))
{
cout<<"Error initializing MAPI. hRes = 0x"<<hex<<hRes<<dec<<endl;
return FALSE;
}
// Instruct user to click the "New" button.
cout<<"When the \"Choose Profile\" dialog appears, click the \"New\" button"
<<"to configure a new profile."<<endl;
// Call MAPILogonEx to display the profile chooser dialog box.
if (FAILED(hRes = MAPILogonEx(NULL,
NULL,
NULL,
MAPI_LOGON_UI,
&lpSession)))
{
cout<<"Error logging on. hRes = 0x"<<hex<<hRes<<dec<<endl;
return FALSE;
}
// Log off the session.
if (FAILED(hRes = lpSession->Logoff(0,0,0)))
{
cout<<"Error logging off. hRes = 0x"<<hex<<hRes<<dec<<endl;
}
// Release the session.
lpSession->Release();
// Uninitialize MAPI.
MAPIUninitialize();
// true, which indicates success.
return TRUE;
}
Použiť funkciu LAUNCHWIZARDENTRY
Táto funkcia priamo žiada vytvorenie Sprievodcu profilmi.
Vzorky kód
// CreateProfileWithLAUNCHWIZARD function: This uses the LAUNCHWIZARDENTRY API
// to display the profile configuration UI.
bool CreateProfileWithLAUNCHWIZARD()
{
HRESULT hRes = S_OK; // Return code from MAPI calls.
TCHAR szProfName[80] = {0}; // String to hold profile name.
LPTSTR szServices[] = {"MSEMS", NULL}; // String to hold message service names.
// Call LaunchWizard to add the MSEMS service.
if (FAILED(hRes = LaunchWizard(NULL,
NULL,
(LPCTSTR *)szServices,
80,
szProfName)))
{
cout<<"Error launching wizard. hRes = 0x"<<hex<<hRes<<dec<<endl;
return FALSE;
}
// Return true indicating success.
return TRUE;
}
Použiť rozhranie MAPI IProfAdmin
Toto rozhranie MAPI vám umožňuje vytvoriť pomocou programu profil bez interakcie užívateľa.
Vzorky kód
// CreateProfileWithIProfAdmin function: This uses the MAPI IProfAdmin to
// programmatically create a profile. No UI is displayed.
bool CreateProfileWithIProfAdmin()
{
HRESULT hRes = S_OK; // Result from MAPI calls.
LPPROFADMIN lpProfAdmin = NULL; // Profile Admin object.
LPSERVICEADMIN lpSvcAdmin = NULL; // Service Admin object.
LPMAPITABLE lpMsgSvcTable = NULL; // Table to hold services.
LPSRowSet lpSvcRows = NULL; // Rowset to hold results of table query.
SPropValue rgval[2]; // Property structure to hold values we want to set.
SRestriction sres; // Restriction structure.
SPropValue SvcProps; // Property structure for restriction.
char szProfile[80] = {0}; // String for profile name.
char szMailbox[80] = {0}; // String for mailbox name.
char szServer[80] = {0}; // String for server name.
// This indicates columns we want returned from HrQueryAllRows.
enum {iSvcName, iSvcUID, cptaSvc};
SizedSPropTagArray(cptaSvc,sptCols) = { cptaSvc, PR_SERVICE_NAME, PR_SERVICE_UID };
// Get configuration info from user.
cout<<"Enter name for profile: ";
cin>>szProfile;
cout<<"Enter Exchange mailbox name: ";
cin>>szMailbox;
cout<<"Enter Exchange server name: ";
cin>>szServer;
// Initialize MAPI.
if (FAILED(hRes = MAPIInitialize(NULL)))
{
cout<<"Error initializing MAPI.";
goto error;
}
// Get an IProfAdmin interface.
if (FAILED(hRes = MAPIAdminProfiles(0, // Flags.
&lpProfAdmin))) // Pointer to new IProfAdmin.
{
cout<<"Error getting IProfAdmin interface.";
goto error;
}
// Create a new profile.
if (FAILED(hRes = lpProfAdmin->CreateProfile(szProfile, // Name of new profile.
NULL, // Password for profile.
NULL, // Handle to parent window.
NULL))) // Flags.
{
cout<<"Error creating profile.";
goto error;
}
// Get an IMsgServiceAdmin interface off of the IProfAdmin interface.
if (FAILED(hRes = lpProfAdmin->AdminServices(szProfile, // Profile that we want to modify.
NULL, // Password for that profile.
NULL, // Handle to parent window.
0, // Flags.
&lpSvcAdmin))) // Pointer to new IMsgServiceAdmin.
{
cout<<"Error getting IMsgServiceAdmin interface.";
goto error;
}
// Create the new message service for Exchange.
if (FAILED(hRes = lpSvcAdmin->CreateMsgService("MSEMS", // Name of service from MAPISVC.INF.
NULL, // Display name of service.
NULL, // Handle to parent window.
NULL))) // Flags.
{
cout<<"Error creating Exchange message service.";
goto error;
}
// You now have to obtain the entry id for the new service.
// You can do this by getting the message service table
// and getting the entry that corresponds to the new service.
if (FAILED(hRes = lpSvcAdmin->GetMsgServiceTable(0, // Flags.
&lpMsgSvcTable))) // Pointer to table.
{
cout<<"Error getting Message Service Table.";
goto error;
}
// Set up restriction to query table.
sres.rt = RES_CONTENT;
sres.res.resContent.ulFuzzyLevel = FL_FULLSTRING;
sres.res.resContent.ulPropTag = PR_SERVICE_NAME;
sres.res.resContent.lpProp = &SvcProps;
SvcProps.ulPropTag = PR_SERVICE_NAME;
SvcProps.Value.lpszA = "MSEMS";
// Query the table to obtain the entry for the newly created message service.
if (FAILED(hRes = HrQueryAllRows(lpMsgSvcTable,
(LPSPropTagArray)&sptCols,
&sres,
NULL,
0,
&lpSvcRows)))
{
cout<<"Error querying table for new message service.";
goto error;
}
// Set up a SPropValue array for the properties that you have to configure.
// First, the server name.
ZeroMemory(&rgval[1], sizeof(SPropValue) );
rgval[1].ulPropTag = PR_PROFILE_UNRESOLVED_SERVER;
rgval[1].Value.lpszA = szServer;
// Next, the mailbox name.
ZeroMemory(&rgval[0], sizeof(SPropValue) );
rgval[0].ulPropTag = PR_PROFILE_UNRESOLVED_NAME;
rgval[0].Value.lpszA = szMailbox;
// Configure the message service by using the previous properties.
if (FAILED(hRes = lpSvcAdmin->ConfigureMsgService(
(LPMAPIUID)lpSvcRows->aRow->lpProps[iSvcUID].Value.bin.lpb, // Entry ID of service to configure.
NULL, // Handle to parent window.
0, // Flags.
2, // Number of properties we are setting.
rgval))) // Pointer to SPropValue array.
{
cout<<"Error configuring message service.";
goto error;
}
goto cleanup;
error:
cout<<" hRes = 0x"<<hex<<hRes<<dec<<endl;
return FALSE;
cleanup:
// Clean up.
if (lpSvcRows) FreeProws(lpSvcRows);
if (lpMsgSvcTable) lpMsgSvcTable->Release();
if (lpSvcAdmin) lpSvcAdmin->Release();
if (lpProfAdmin) lpProfAdmin->Release();
MAPIUninitialize();
return TRUE;
}
Vzorky
Nasledujúce
súbor je k dispozícii na prevzatie od Microsoft Download
Centrum:
Profiler.exe
(http://download.microsoft.com/download/exchplatinumbeta/Sample/1.0/NT45/EN-US/Profiler.exe)
Dátum vydania: 22. októbra 2001
Ďalšie informácie o preberaní Microsoft podporné súbory získate po kliknutí na nasledovné číslo článku databázy Microsoft Knowledge Base:
119591
(http://support.microsoft.com/kb/119591/
)
Ako získať Microsoft podporných súborov zo služieb online
Microsoft naskenované tento súbor vírusy. Microsoft používa najnovší antivírusový softvér, ktorý bol k dispozícii v deň, že súbor bol vyslaný. Súbor je uložený na zabezpečených serveroch, ktoré zabrániť neoprávneným zmenám v súbore. Profiler.exe je jednoduchá vzorka, Microsoft Visual C++
to dokazuje metódy 3 až 5 vyššie. Profiler.exe súbor obsahuje
nasledovné súbory:
Zbaliť túto tabuľkuRozbaliť túto tabuľku
| Názov súboru | Veľkosť |
|---|
| Profiler.dsw | 1 KB |
| Profiler.DSP | 5 KB |
| Profiler.CPP | 12 KB |
ID článku: 306962 - Posledná kontrola: 31. októbra 2011 - Revízia: 2.0
Informácie v tomto článku sa týkajú nasledujúcich produktov:
- Microsoft Exchange Server 2003 Enterprise Edition
- Microsoft Exchange Server 2003 Standard Edition
- Microsoft Exchange 2000 Server Standard Edition
- Microsoft Exchange Server 5.5 Standard Edition
- Messaging Application Programming Interface
| kbdownload kbhowto kbmsg kbmt KB306962 KbMtsk |
Strojovo preloženéDÔLEŽITÉ: Tento článok bol preložený pomocou softvéru na strojový preklad od spoločnosti Microsoft, nie prekladateľom. Spoločnosť Microsoft ponúka články preložené prekladateľmi aj strojovo preložené články, vďaka čomu máte možnosť prístupu ku všetkým článkom databázy Knowledge Base vo svojom jazyku. Strojovo preložený článok však nie je vždy perfektný. Môže obsahovať chyby týkajúce sa slovnej zásoby, syntaxe alebo gramatiky, podobne ako cudzinec môže robiť chyby, keď rozpráva vašim jazykom. Spoločnosť Microsoft nenesie zodpovednosť za akékoľvek nepresnosti, chyby alebo škody spôsobené akýmkoľvek nepresným prekladom obsahu alebo jeho použitím zo strany zákazníkov. Spoločnosť Microsoft softvér na strojový preklad pravidelne aktualizuje.
Pokiaľ chcete vidieť anglickú verziu článku, kliknite sem:
306962
(http://support.microsoft.com/kb/306962/en-us/
)