Я пытаюсь переименовать принтер с использованием WMI в C#. Я могу запускать запросы для выбора принтеров, но когда я пытаюсь вызвать метод RenamePrinter
, я получаю результат «Отказано в доступе». Я попытался запустить это приложение как администратор и создать манифест, но я не могу вызвать этот метод, если только я не запускаюсь под учетной записью администратора.Invoke RenamePrinter как пользователь, не являющийся администратором
var oSearcher = new ManagementObjectSearcher(oMs, oQuery);
ManagementObjectCollection oReturnCollection = oSearcher.Get();
foreach (ManagementObject oReturn in oReturnCollection)
{
var objectClass = new ManagementClass("Win32_Printer");
var inParams = objectClass.GetMethodParameters("RenamePrinter");
inParams["NewPrinterName"] = "..."; // something
ManagementBaseObject oResult = oReturn.InvokeMethod("RenamePrinter", inParams, null);
var result = oResult["returnValue"]; // 5 = Access Denied
Есть ли какой-то способ, которым я могу вызвать RenamePrinter
под учетной записью обычного пользователя - даже если это означает, что работает в качестве администратора?