解惑

解己之惑,解人之惑

日:2009年8月31日

用代码创建MAPI的Profile

这个问题曾经折磨了我好几天,最终放弃了。
最后在其他同事的不懈努力下最终解决:

extern "C" __declspec(dllexport) bool CreateProfileWithIProfAdmin( LPTSTR szProfile,LPTSTR szMailbox,LPTSTR szServer)
{
    HRESULT         hr = 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.

    // This indicates columns we want returned from HrQueryAllRows.
    enum {iSvcName, iSvcUID, cptaSvc};
    SizedSPropTagArray(cptaSvc,sptCols) = { cptaSvc, PR_SERVICE_NAME, PR_SERVICE_UID };

阅读全文

到底是谁?

Windows的IIS应用的身份真的是太复杂了一点。
首先是IIS的Service是有运行用户的
然后是应用使用的Application Pool也有运行用户
然后是应用也可以指定Impersonate的用户
而如果应用没有使用Windows的用户,那么还可能有另外一个用户。

以前没有搞过Windows的Web的开发,不太清楚这个里面的最佳实践。

目前的感觉是:
IIS的身份一般不去动,因为是大家共享的
如果需要比较强的用户身份,而且比较固定,建议修改Application Pool的运行身份,另外建议创建自己的Application Pool,如果应用只是简单的需要某种身份访问系统中的资源,例如读写文件、服务数据库,那么建议简单的修改web.config,使用Impersonate指定一个用户。

© 2025 解惑

本主题由Anders Noren提供向上 ↑