Операция была отменена пользователем. (Исключение из 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 level="requireAdministrator")

  2. Я получаю ту же ошибку с UAC On или даже OFF.

  3. Драйвер не имеет цифровой подписи

  4. Если я устанавливаю драйвер вручную, я получаю предупреждение безопасности windows, с "Don't install this driver software" в качестве опции по умолчанию (И, к сожалению, не получаю это сообщение при выполнении приведенного выше кода).

Информации недостаточно, чтобы определить точную причину, но я наткнулся на ту же ошибку, когда выполнял операцию, требующую ввода от пользователя (принять или отменить операцию), но приложение не могло отобразить запрос (поскольку это приложение без графического интерфейса), поэтому действием по умолчанию была Cancel. Однако, скорее всего, это как-то связано с UAC (вы можете проверить это, временно отключив UAC).

Комментарии (0)

Если вы хотите заставить ваше приложение требовать повышенных привилегий, используйте App.manifest, как описано в этом вопросе.

Комментарии (0)

Я уверен на 100%, но похоже, что при тихом запуске из вашего скрипта, предупреждение о том, что ваш драйвер не имеет цифровой подписи, не может быть отображено и поэтому по умолчанию отменяется установка.

Пробовали ли вы подписать драйвер цифровой подписью с помощью самоподписанного сертификата? Если он устанавливается после подписания, то причина в предупреждении.

Комментарии (1)