2011-04-27 32 views
0

嘗試添加打印機驅動程序時出現此錯誤。該操作已被用戶取消。 (來自HRESULT的例外:0x800704C7)

操作被用戶取消。 (異常來自HRESULT:0x800704C7)

我在這裏做錯了什麼?

Public Function AddDriver(ByVal DriverName As String, ByVal InfFile As String) As Boolean 
    Try 
     Dim PRNADMIN As New PRNADMINLib.PrintMaster 

     Dim Drv As New PRNADMINLib.Driver 
     Drv.ModelName = DriverName 
     Drv.InfFile = InfFile 
     PRNADMIN.DriverAdd(Drv) 
     Return True 
    Catch ex As Exception 
     MessageBox.Show(ex.Message, frmMain.Text, MessageBoxButtons.OK, MessageBoxIcon.Exclamation) 
     Return False 
    End Try 
End Function 

這裏談到的C#版本

public bool AddDriver(string DriverName, string InfFile) 
{ 
    try { 
    PRNADMINLib.PrintMaster PRNADMIN = new PRNADMINLib.PrintMaster(); 

    PRNADMINLib.Driver Drv = new PRNADMINLib.Driver(); 
    Drv.ModelName = DriverName; 
    Drv.InfFile = InfFile; 
    PRNADMIN.DriverAdd(Drv); 
    return true; 
} catch (Exception ex) { 
    MessageBox.Show(ex.Message, frmMain.Text, MessageBoxButtons.OK, MessageBoxIcon.Exclamation); 
    return false; 
} 
} 

UPDATE:

  1. 在app.manifest的應用程序請求管理權限(requestedExecutionLevel水平= 「requireAdministrator」)

  2. 我得到與UAC On或甚至OFF相同的錯誤。

  3. 的驅動程序沒有數字簽名

  4. 如果我手動安裝驅動程序,我得到的Windows安全警告,與「不安裝此驅動程序軟件」作爲默認選項(不幸的是,沒有得到該消息,同時運行上面的代碼)。

+0

似乎問題在於安裝驅動程序或驅動程序本身的安全/權限。假設這是一個普通的打印機驅動程序,您可以通過控制面板安裝驅動程序。 – 2011-04-27 07:36:41

回答

0

沒有足夠的信息來計算的確切原因,但我偶然發現了同樣的錯誤,當我這樣做,是需要用戶輸入(接受或取消操作)的操作,但該應用程序是無法顯示該提示(因爲它是無GUI的應用程序),所以默認操作是取消。但是,這很可能與UAC有關(可以通過暫時禁用UAC來測試)。

0

如果您想強制您的應用程序要求提升權限,請使用用戶App.manifest,如this question中所述。

0

我敢肯定100%,但它看起來像從腳本靜默運行,關於您的驅動程序警告沒有數字簽名無法顯示,因此默認爲取消安裝。

您是否嘗試過使用自簽名證書對您的驅動程序進行數字簽名?如果在簽名後安裝,則原因是警告。

+0

其實我沒有嘗試用自簽名證書來判斷它。我會試一試,讓你知道 – OrElse 2011-04-28 17:20:54

相關問題