该操作被用户取消。 (HRESULT异常:0x800704C7)

时间:2011-04-27 07:09:04

标签: c# .net vb.net uac

尝试添加打印机驱动程序时出现此错误。

  

用户取消了该操作。 (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;
}
}

更新:

  1. 应用程序在app.manifest中请求管理权限(requestedExecutionLevel level =“requireAdministrator”)

  2. 我在UAC On或甚至OFF时遇到同样的错误。

  3. 驱动程序未经过数字签名

  4. 如果我手动安装驱动程序,我会收到Windows安全警告,“不要安装此驱动程序软件”作为默认选项(不幸的是,在运行上面的代码时不要获取该消息)。 / p>

3 个答案:

答案 0 :(得分:0)

没有足够的信息来确定原因,但是当我做一个需要用户输入的操作(接受或取消操作)时,我偶然发现了同样的错误,但是应用程序无法显示该提示(因为它是一个无GUI的应用程序),所以默认操作是取消。但是,这很可能与UAC有关(您可以通过暂时禁用UAC来测试)。

答案 1 :(得分:0)

如果您想强制您的应用程序要求提升权限,请按照this question中的说明使用App.manifest。

答案 2 :(得分:0)

我确定100%,但看起来当从脚本静默运行时,无法显示有关未经数字签名的驱动程序的警告,因此默认为取消安装。

您是否尝试使用自签名证书对驱动程序进行数字签名?如果在签名后安装,则原因是警告。