Example #1
0
            /// <summary>
            /// Get the PrintQueue from the PrinterName
            /// </summary>
            /// <param name="printerName"></param>
            /// <returns></returns>
            PrintQueue FindPrintQueue(string printerName)
            {
                EnumeratedPrintQueueTypes[] flag   = new EnumeratedPrintQueueTypes[] { EnumeratedPrintQueueTypes.Local, EnumeratedPrintQueueTypes.Connections };
                PrintQueueIndexedProperty[] pArray = new PrintQueueIndexedProperty[2];
                pArray[1] = PrintQueueIndexedProperty.QueueAttributes;

                new PrintingPermission(PrintingPermissionLevel.DefaultPrinting).Assert();

                try
                {
                    using (LocalPrintServer s = new LocalPrintServer())
                    {
                        foreach (PrintQueue q in s.GetPrintQueues(pArray, flag))
                        {
                            if (printerName.Equals(q.FullName, StringComparison.OrdinalIgnoreCase))
                            {
                                q.InPartialTrust = true;
                                return(q);
                            }
                        }
                    }
                }
                finally
                {
                    CodeAccessPermission.RevertAssert();
                }

                return(null);
            }
Example #2
0
            AcquirePrintQueue(
                string printerName
                )
            {
                PrintQueue printQueue = null;

                EnumeratedPrintQueueTypes[] types = new EnumeratedPrintQueueTypes[] {
                    EnumeratedPrintQueueTypes.Local,
                    EnumeratedPrintQueueTypes.Connections
                };

                //
                // This forces us to acquire the cached version of the print queues.
                // This theoretically should prevent crashing in the printing system
                // since all it is doing is reading the registry.
                //
                PrintQueueIndexedProperty[] props = new PrintQueueIndexedProperty[] {
                    PrintQueueIndexedProperty.Name,
                    PrintQueueIndexedProperty.QueueAttributes
                };

                SystemDrawingHelper.NewDefaultPrintingPermission().Assert();  //BlessedAssert
                try
                {
                    //
                    // Get the PrintQueue instance for the printer
                    //
                    using (LocalPrintServer server = new LocalPrintServer())
                    {
                        foreach (PrintQueue queue in server.GetPrintQueues(props, types))
                        {
                            if (printerName.Equals(queue.FullName, StringComparison.OrdinalIgnoreCase))
                            {
                                printQueue = queue;
                                break;
                            }
                        }
                    }
                    if (printQueue != null)
                    {
                        printQueue.InPartialTrust = true;
                    }
                }
                finally
                {
                    CodeAccessPermission.RevertAssert();
                }

                return(printQueue);
            }
Example #3
0
            private PrintQueue AcquirePrintQueue(string printerName)
            {
                PrintQueue printQueue = null;

                EnumeratedPrintQueueTypes[] enumerationFlag = new EnumeratedPrintQueueTypes[]
                {
                    EnumeratedPrintQueueTypes.Local,
                    EnumeratedPrintQueueTypes.Connections
                };
                PrintQueueIndexedProperty[] propertiesFilter = new PrintQueueIndexedProperty[]
                {
                    PrintQueueIndexedProperty.Name,
                    PrintQueueIndexedProperty.QueueAttributes
                };
                SystemDrawingHelper.NewDefaultPrintingPermission().Assert();
                try
                {
                    using (LocalPrintServer localPrintServer = new LocalPrintServer())
                    {
                        foreach (PrintQueue printQueue2 in localPrintServer.GetPrintQueues(propertiesFilter, enumerationFlag))
                        {
                            if (printerName.Equals(printQueue2.FullName, StringComparison.OrdinalIgnoreCase))
                            {
                                printQueue = printQueue2;
                                break;
                            }
                        }
                    }
                    if (printQueue != null)
                    {
                        printQueue.InPartialTrust = true;
                    }
                }
                finally
                {
                    CodeAccessPermission.RevertAssert();
                }
                return(printQueue);
            }
            AcquirePrintQueue(
                string printerName 
                ) 
            {
                PrintQueue printQueue = null; 

                EnumeratedPrintQueueTypes[] types = new EnumeratedPrintQueueTypes[] {
                    EnumeratedPrintQueueTypes.Local,
                    EnumeratedPrintQueueTypes.Connections 
                };
 
                // 
                // This forces us to acquire the cached version of the print queues.
                // This theoretically should prevent crashing in the printing system 
                // since all it is doing is reading the registry.
                //
                PrintQueueIndexedProperty[] props = new PrintQueueIndexedProperty[] {
                    PrintQueueIndexedProperty.Name, 
                    PrintQueueIndexedProperty.QueueAttributes
                }; 
 
                (new PrintingPermission(PrintingPermissionLevel.DefaultPrinting)).Assert();  //BlessedAssert
                try 
                {
                    //
                    // Get the PrintQueue instance for the printer
                    // 
                    using (LocalPrintServer server = new LocalPrintServer())
                    { 
                        foreach (PrintQueue queue in server.GetPrintQueues(props, types)) 
                        {
                            if (printerName.Equals(queue.FullName, StringComparison.OrdinalIgnoreCase)) 
                            {
                                printQueue = queue;
                                break;
                            } 
                        }
                    } 
                    if (printQueue != null) 
                    {
                        printQueue.InPartialTrust = true; 
                    }
                }
                finally
                { 
                    PrintingPermission.RevertAssert();
                } 
 
                return printQueue;
            } 
			/// <summary>
			/// Get the PrintQueue from the PrinterName
			/// </summary>
			/// <param name="printerName"></param>
			/// <returns></returns>
			PrintQueue FindPrintQueue(string printerName)
			{
				EnumeratedPrintQueueTypes[] flag = new EnumeratedPrintQueueTypes[] { EnumeratedPrintQueueTypes.Local, EnumeratedPrintQueueTypes.Connections };
				PrintQueueIndexedProperty[] pArray = new PrintQueueIndexedProperty[2];
				pArray[1] = PrintQueueIndexedProperty.QueueAttributes;

				new PrintingPermission(PrintingPermissionLevel.DefaultPrinting).Assert();

				try
				{
					using (LocalPrintServer s = new LocalPrintServer())
					{
						foreach (PrintQueue q in s.GetPrintQueues(pArray, flag))
						{
							if (printerName.Equals(q.FullName, StringComparison.OrdinalIgnoreCase))
							{
								q.InPartialTrust = true;
								return q;
							}
						}
					}
				}
				finally
				{
					CodeAccessPermission.RevertAssert();
				}

				return null;
			}