【发布时间】:2014-12-04 05:12:50
【问题描述】:
我正在尝试在 C# 中使用 WMI 重命名打印机。我可以运行查询来选择打印机,但是当我尝试调用 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——即使这意味着以管理员身份运行?
【问题讨论】: