Используя следующий код, я могу найти и удалить из очереди печати«Win32_Printer Где Network = TRUE» не возвращают результат в Visual Studio инсталлятор проекта
Dim scope = New ManagementScope(ManagementPath.DefaultPath)
scope.Connect()
Dim printers = New ManagementObjectSearcher(scope, New SelectQuery("Select * from Win32_Printer Where Network = TRUE")).[Get]()
MsgBox("Print count: " & printers.Count)
For Each printer As ManagementObject In printers
Dim nameOfPrinter = printer("Name").ToString()
If nameOfPrinter.Contains("BROTHER") OrElse nameOfPrinter.Contains("HP") Then
printer.Delete()
End If
Next
Однако, когда я двигаю код installer.vb (который добавляется к установщику проекту в качестве основного выхода (активный)), то printers.count возвращается 0
ОБНОВЛЕНО: если я удалю где причину, я могу получить местные очереди печати
<Security.Permissions.SecurityPermission(Security.Permissions.SecurityAction.Demand)> _
Public Overrides Sub Commit(ByVal savedState As _
System.Collections.IDictionary)
Dim scope = New ManagementScope(ManagementPath.DefaultPath)
scope.Connect()
Dim printers = New ManagementObjectSearcher(scope, New SelectQuery("Select * from Win32_Printer Where Network = TRUE")).[Get]()
MsgBox("Print count: " & printers.Count)
For Each printer As ManagementObject In printers
Dim nameOfPrinter = printer("Name").ToString()
If nameOfPrinter.Contains("BROTHER") OrElse nameOfPrinter.Contains("HP") Then
printer.Delete()
End If
Next
Есть что-нибудь, что я пропустил, чтобы добавить? Пожалуйста, посоветуйте, спасибо.