尝试添加打印机驱动程序时出现此错误。
用户取消了该操作。 (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;
}
}
更新:
应用程序在app.manifest中请求管理权限(requestedExecutionLevel level =“requireAdministrator”)
我在UAC On或甚至OFF时遇到同样的错误。
驱动程序未经过数字签名
如果我手动安装驱动程序,我会收到Windows安全警告,“不要安装此驱动程序软件”作为默认选项(不幸的是,在运行上面的代码时不要获取该消息)。 / p>
答案 0 :(得分:0)
没有足够的信息来确定原因,但是当我做一个需要用户输入的操作(接受或取消操作)时,我偶然发现了同样的错误,但是应用程序无法显示该提示(因为它是一个无GUI的应用程序),所以默认操作是取消。但是,这很可能与UAC有关(您可以通过暂时禁用UAC来测试)。
答案 1 :(得分:0)
如果您想强制您的应用程序要求提升权限,请按照this question中的说明使用App.manifest。
答案 2 :(得分:0)
我确定100%,但看起来当从脚本静默运行时,无法显示有关未经数字签名的驱动程序的警告,因此默认为取消安装。
您是否尝试使用自签名证书对驱动程序进行数字签名?如果在签名后安装,则原因是警告。