2011-09-15 52 views
0

我有一個exe(test.exe)這是一個32位寫在c + +(unicode字符集)。這個exe將執行恢復操作。的步驟包括:Spawing exe不繼承權限

  1. 檢查前景安裝和負載msmapi32.dll
  2. 在創建所指定的用戶的收件箱中的子目錄。
  3. 將eml文件導入子文件夾。

這些操作是使用給予完全訪問權限的臨時用戶完成的。

此exe文件執行正常。問題是當我嘗試使用C#Process.start()產生這個exe文件時,它在調用「createstoreentryid」時失敗,並返回[MAPI_E_FAILONEPROVIDER]

請提出任何建議。

+0

嘗試使用UNC憑據 – 62071072SP

+0

機器以域管理員身份登錄。你能解釋如何使用UNC憑證嗎? – inmar

回答

0
 using (UNCAccessWithCredentials unc = new UNCAccessWithCredentials()) 
     { 
      if (unc.NetUseWithCredentials(path, 
              userName, 
              domain, 
              passWord,textFile)) 
      { 
       System.Diagnostics.Process.Start(path); 
      } 

     } 
+0

我不想訪問共享。 Mapi需要登錄到其他用戶的郵箱的權限。我嘗試通過創建另一個C++控制檯應用程序,併成功產生了exe。這裏的問題是從C#產生相同的exe文件。 – inmar

+0

@inmar好我現在明白你是否設法解決這個問題,如果沒有看看這個問題http://stackoverflow.com/questions/3513830/process-start-slow-when-spawning-more-new-processes – 62071072SP

+0

發現問題。現在,我可以使用process.start()生成C#的exe格式。 問題:C++ exe使用的是Unicode字符集。我更改爲prj設置中的多字符集。 謝謝 – inmar