2008-09-18 26 views

回答

20

這一個困惑我約30分鐘。

首先,您可能需要在應用中嵌入UAC清單(as suggested here)。事情是這樣的:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
    <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> 
    <!-- Identify the application security requirements. --> 
    <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3"> 
     <security> 
     <requestedPrivileges> 
      <requestedExecutionLevel 
      level="asInvoker" 
      uiAccess="false"/> 
     </requestedPrivileges> 
     </security> 
    </trustInfo> 
    </assembly> 

其次(這是位我就死在),當你在調試器下運行你的應用程序,它會在一個工作對象的過程。您的子流程需要能夠在您將其分配給您的工作之前脫離。所以(duh),您需要在CreateProcess的標誌中指定CREATE_BREAKAWAY_FROM_JOB)。

如果你沒有在調試器下運行,或者你的父進程在工作中,這不會發生。

4

這似乎很經常咬我,雖然很好,但1800INFORMATION的帖子似乎並沒有包含一些看起來有用的原因和修復,所以似乎值得發佈我爲什麼看到這種情況的總結。

  1. 當試圖解決這個爲自己,注意不是這個問題 從CMD.EXE,資源管理器, 和Visual Studio運行時,可能會出現不同的原因。試圖從 各個位置運行失敗的可執行文件可以幫助找出問題的原因。儘管未能從V.S.中獲得,但您的 應用程序可能只能從CMD.EXE中查找。 和Explorer.exe的
  2. 在我的例子中,Win7下,我似乎需要取消註釋「supportedOS」 元素指示從app.manifest 文件Win7的兼容性。這似乎解決了從資源管理器運行時的問題。到 添加一個清單,右鍵點擊該項目,點擊添加,然後找到 '應用程序清單文件'。
  3. 要獲得Visual Studio 2010的工作,我似乎需要從使用程序兼容性助手阻止它,湯姆敏卡股份兩種方式,在這裏做這樣的:https://stackoverflow.com/a/4232259/86375,請注意,我不得不重新啓動VS2010把他的建議的變更。
相關問題