2011-04-27 29 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

相关问题