none
Script VBS para remover impressoras em usuários restritos RRS feed

  • Pergunta

  • Meus amigos, om dia...

        Mudei de servidor e todas as 900 estações com WinXP e Win2000 mapeei as novas impressoras via script de logon, beleza.

        Agora quero remover todas as impressoras antigas, abaixo postei várias soluções que funcionaram somente em usuários com permissões administrativas, já os usuários sem permissão para remover não funcionou. Qual seria a solução neste caso ?

         Será que eu teria que dar permissão em alguma chave do registro do windows via GPO para que usuários restritos possam ter permissão para remover as impressoras? Se sim qual seria a chave do registro onde fica as impressoras mapeadas ? 

          Postei os scripts que só funcionam se o usuário tiver permissão adm local.

    Solution 1:

    Set WshNetwork = WScript.CreateObject("WScript.Network")
    Set oPrinters = WshNetwork.EnumPrinterConnections
    For i = 0 to oPrinters.Count -1
        WScript.Echo oPrinters.Item(i)
        if InStr(objPrinter.Name, "\\") > 0 then
            WshNetwork.RemovePrinterConnection oPrinters.Item(i)
        end if
    Next

    Solution 2:

    strComputer = "."
    Set WshNetwork = WScript.CreateObject("WScript.Network")
    Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    Set colInstalledPrinters = objWMIService.ExecQuery ("Select * from Win32_Printer")


    For Each objPrinter in colInstalledPrinters
        Wscript.Echo "Name: " & objPrinter.Name
        Wscript.Echo "Location: " & objPrinter.Location
        if InStr(objPrinter.Name, "\\") > 0 then
             'wscript.echo "Will delete: " & objPrinter.Name
             WshNetwork.RemovePrinterConnection objPrinter.Name
         end if
    Next


    Solution 3
    ' RemovePrinterConnection.vbs - Windows logon script
    ' VBScript to - Network Printer
    ' Author Guy Thomas http://computerperformance.co.uk/
    ' Version 1.4 - April 24th 2005
    ' ------------------------------------------------------'
    Option Explicit
    Dim objNetwork, strUNCPrinter
    strUNCPrinter = "\\PrintServ\Canon1"

    Set objNetwork = CreateObject("WScript.Network")
    ' Section which removes the network printer
    objNetwork.RemovePrinterConnection strUNCPrinter

    WScript.Echo "Check Printers folder NO: " & strUNCPrinter
    Wscript.Quit

    quarta-feira, 2 de fevereiro de 2011 10:04

Respostas

  • Na net encontrei estas soluções:

    1. Se a impressora for "local", dar permissão nos registros abaixo para os usuarios e eliminar a subchave da respectiva impressora.

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Environments\ Windows NT x86\ Drivers\Version-X\

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Printers\

         2. Se a impressora for "de rede", ir até às chaves de registo abaixo indicadas e eliminar a subchave da respectiva impressora.

    HKEY_CURRENT_USER\Printers\Connections\

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Providers\ LanMan Print Services\Servers\Printers\

          Ao termino: Após eliminar as impressoras pretendidas, reiniciar o spooler de impressão (print spooler).

     

    PERGUNTA:

       Depois que eu der permissão via GPO, como faço para eliminar uma chave de registro do windows via VBS ?

    quarta-feira, 2 de fevereiro de 2011 10:33