Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 尝试使用打印机的安全透明方法_C#_.net_Security_Printers_Printqueue - Fatal编程技术网

C# 尝试使用打印机的安全透明方法

C# 尝试使用打印机的安全透明方法,c#,.net,security,printers,printqueue,C#,.net,Security,Printers,Printqueue,我正在用C#编写一个应用程序,它允许清除default的打印机队列 为此,我有这样一段代码: String spoolDir = "C\\Windows\\System32\\spool\\PRINTERS"; System.IO.DirectoryInfo dir = new System.IO.DirectoryInfo(spoolDir); int spoolCount = dir.GetFiles().Length; if (spoolCount > 0) { using (Pr

我正在用C#编写一个应用程序,它允许清除default的打印机队列

为此,我有这样一段代码:

String spoolDir = "C\\Windows\\System32\\spool\\PRINTERS";
System.IO.DirectoryInfo dir = new System.IO.DirectoryInfo(spoolDir);
int spoolCount = dir.GetFiles().Length;
if (spoolCount > 0)
{
 using (PrintServer ps = new PrintServer())
 {
  System.Drawing.Printing.PrinterSettings settings = new System.Drawing.Printing.PrinterSettings();
  using (PrintQueue pq = new PrintQueue(ps, settings.PrinterName, PrintSystemDesiredAccess.AdministratePrinter))
  {
   pq.Purge();
  }
 }
} 
我已将以下内容添加到程序集文件中:

[assembly: SecurityRules(SecurityRulesSet.Level1)]
[assembly: AllowPartiallyTrustedCallers]
[assembly: SecurityTransparent()]
不幸的是,我得到了这个错误:

尝试使用安全透明方法 “MS.Internal.PrintWin32Thunk.PrinterDefaults.Dispose(布尔)”到 访问安全关键方法 'MS.Internal.PrintWin32Thunk.PrinterDefaults.InternalDispose(布尔)' 失败了

该应用程序在我正在开发程序的PC(Win 7,64位)上运行得非常好,但在目标PC(Win XP,32位)上运行时会抛出如上所述的异常

应用程序使用4.0框架。我知道解决这些问题的一个方法是将框架降级到3.5,但不幸的是,我使用的库需要4.0框架

当我将PrintQueue构造函数更改为:

PrintQueue pq = new PrintQueue(ps, settings.PrinterName)
然后我在WinXP中遇到访问被拒绝的异常

我能做些什么来解决这个问题


提前谢谢你的帮助:)

好吧,你在撒谎。你说你的代码没有任何安全要求。但确实如此,PrintSystemDesiredAccess.AdministratePrinter是不合适的。Kaboom,当您未完全信任运行时。已知问题:“MS.Internal.PrintWin32Thunk.PrinterDefaults.Dispose()上缺少SecurityCritical属性。”相关: