Операция была отменена пользователем. (Исключение из HRESULT: 0x800704C7) - PullRequest
0 голосов
/ 27 апреля 2011

Я получаю эту ошибку при попытке добавить драйвер принтера.

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

  2. Я получаю ту же ошибку при включенном или выключенном UAC.

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

  4. Если я устанавливаю драйвер вручную, то яполучите предупреждение о безопасности Windows, с параметром «Не устанавливать этот драйвер» в качестве параметра по умолчанию (И, к сожалению, не получите это сообщение при выполнении кода выше).

Ответы [ 3 ]

0 голосов
/ 27 апреля 2011

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

0 голосов
/ 28 апреля 2011

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

У вас естьпытался подписать драйвер цифровой подписью?Если он устанавливается после подписания, то причина в предупреждении.

0 голосов
/ 27 апреля 2011

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

...