我正在尝试在C#中创建一个清空打印队列中所有项目的方法.以下是我的代码:
LocalPrintServer localPrintServer = new LocalPrintServer(PrintSystemDesiredAccess.AdministratePrinter);
PrintQueue printQueue = localPrintServer.GetPrintQueue(printerName);
if (printQueue.NumberOfJobs > 0)
{
printQueue.Purge();
}
Run Code Online (Sandbox Code Playgroud)
当此代码运行时,在localPrintServer构造函数上,应用程序抛出此错误:"创建PrintServer对象时发生异常.Win32错误:访问被拒绝."
该构造函数有一些重载(包括不发送参数).尝试其中任何一个,我越过那一行,但是当我进入printQueue.Purge()调用时,我得到了与上面列出的相同的访问被拒绝消息.
寻找有关如何/我可以做些什么的建议来解决这个问题.我可以从我的电脑手动删除打印作业.我不确定应用程序是否以相同的访问权限运行,也不确定如何检查.
我正在尝试创建测试证书并签署我创建的.MSI文件.在购买真正的安全证书之前,我需要让测试版与签名的.MSI一起使用.
我已执行以下步骤来签署我的.MSI文件.一切都成功完成,并显示一条消息,表明在最后一步之后成功签署了1个文件.
makecert.exe -sv c:\Test\mykey.pvk -n "CN=WTS" c:\Test\myCert.cer
cert2spc.exe c:\Test\mycert.cer c:\Test\mycert.spc
pvk2pfx -pvk c:\Test\mykey.pvk -pi password -spc c:\Test\mycert.spc -pfx c:\Test\mycert.pfx -po password
signTool sign /f c:\Test\mycert.pfx /p password /v c:\Test\test.msi
Run Code Online (Sandbox Code Playgroud)
执行这些步骤后,我运行.MSI文件(为.MSI修改的日期确实更改为与运行signTool步骤的时间相匹配).显示此.MSI来自未知发布者的警告消息仍显示为"发布者:未知".
我错过了一步还是什么?一切似乎都正常,我从来没有看到任何错误,但我的文件似乎没有签名.
我正在创建一个更大的XML文档中使用的几个XmlElements.
XmlElement thisElement = xmlSearchParameters.CreateElement("value");
thisElement.InnerXml = this.searchParameters[key];
Run Code Online (Sandbox Code Playgroud)
这适用于大多数情况,但如果searchParameters [key]的值恰好包含&符号,则会出现以下两个错误之一:
发生了意外的文件结束.第1行,第1位. - 如果值仅为&
解析EntityName时发生错误.第1行,第7行. - 如果值包含&与其他文本混合.
在XmlElement中包含&和任何其他特殊符号的首选方法是什么?我怀疑必须有一个更好的方法,而不仅仅是替换和其他东西(某种XmlFormat方法???).