У меня есть простая программа, которая добавляет указанное c подключение принтера к серверу и печатает на этом принтере документ в формате PDF. После печати документа подключение к принтеру будет удалено.
Теперь все работает нормально, когда я запускаю приложение в качестве собственной учетной записи администратора. Но когда я запускаю приложение с учетной записью пользователя службы, я не могу добавить подключение к принтеру. Сбой с кодом ошибки 87: INVALID_PARAMETER
Примечание. Если подключение принтера к аппарату (серверу) доступно, тогда я могу печатать с использованием учетной записи пользователя службы. Только добавление соединения с принтером, которое не существует, не работает.
Вот фрагмент кода:
private static ManagementScope oManagementScope = null;
public static bool AddPrinter(string printerName)
{
var result = false;
try
{
oManagementScope = new ManagementScope(ManagementPath.DefaultPath);
oManagementScope.Connect();
using (ManagementClass win32Printer = new ManagementClass("Win32_Printer"))
{
using (ManagementBaseObject inputParam = win32Printer.GetMethodParameters("AddPrinterConnection"))
{
inputParam.SetPropertyValue("Name", printerName);
using (ManagementBaseObject methodResult = win32Printer.InvokeMethod("AddPrinterConnection", inputParam, null))
{
uint errorCode = (uint)methodResult.Properties["returnValue"].Value;
switch (errorCode)
{
case 0:
Logger.LogInfo("Successfully connected printer.");
result = true;
break;
case 5:
Logger.LogError("Access Denied.");
break;
case 123:
Logger.LogError("The filename, directory name, or volume label syntax is incorrect.");
break;
case 1801:
Logger.LogError("Invalid Printer Name: " + printerName);
break;
case 1930:
Logger.LogError("Incompatible Printer Driver.");
break;
case 3019:
Logger.LogError("The specified printer driver was not found on the system and needs to be downloaded.");
break;
default:
Logger.LogError("Could not add the specific printer, Error Code: " + errorCode);
break;
}
}
}
}
}
catch (Exception ex)
{
Logger.LogError(ex.Message + ", " + ex.InnerException?.Message);
}
return result;
}
Мы уже пытались добавить те же разрешения для пользователя службы, что и У меня есть на моем админ-аккаунте. Я все еще получаю код ошибки 87 при добавлении подключения к принтеру.
Поскольку я немного исследовал код ошибки 87, я обнаружил, что это означает что-то вроде НЕВЕРНЫЙ ПАРАМЕТР. Но я не могу понять, какой параметр должен быть недействительным, и почему он работает на сервере, когда я запускаю его с моей учетной записью администратора?
Любая помощь приветствуется
Спасибо