Oculta a impressora no Windows 7, mas é capaz de imprimir programaticamente

0

Gostaria de obter o seguinte requisito no Windows 7 com Convidado Conta

  1. O usuário não poderá ver / selecionar uma determinada impressora durante a impressão, por exemplo, com o Microsoft Word, o Adobe Reader, etc.
  2. No entanto, o usuário pode imprimir com essa impressora oculta com meu próprio aplicativo desenvolvido. (O que significa que o aplicativo em si poderá enviar dados para a impressora oculta para impressão)

Uma abordagem que estou pensando é desativar a permissão "Imprimir" para essa conta de convidado. A impressora ficará oculta do usuário, mas isso não permite que o usuário imprima.

Posso saber que existe alguma maneira de conseguir isso? Ou programaticamente ou com configuração.

    
por NcJie 21.08.2014 / 12:57

1 resposta

2

Permitir que a impressora imprima a partir do aplicativo selecionado pode ser complicado. Não existe esse mecanismo no Windows, mas você pode resolver isso de alguma forma. Eu tenho algumas ideias sujas , você pode pensar mais sobre isso e talvez você descubra algo melhor ou menos complexo.

Você pode gerenciar permissões de impressora, incluindo impressoras locais no Windows (desde o Windows 2000).

eu. Bloquear permissões de impressão para convidados (ou grupo de convidados ou outro usuário que supostamente usaria seu programa) - para desativar a impressão normal para essa conta / grupo.

  1. Ir para dispositivos em impressoras (no painel de controle)
  2. Clique com o botão direito do mouse na impressora e selecione "Propriedades da impressora" (não apenas "Propriedades"!)
  3. Deve haver a guia Segurança. Você pode gerenciar permissões para contas e grupos.
  4. Configure permissões para sua conta Convidado (ou grupo Convidados, depende de você).

II. Prepare o sistema e seu aplicativo para imprimir como outro usuário

  1. Adicione outra conta do Windows e permita que ela seja impressa. Você pode querer desativar o logon normal para ele (acho que remover esse usuário do grupo Usuários impedirá que esse usuário apareça na tela de logon).

  2. Compartilhe sua impressora (normalmente, como na rede)

  3. Em sua aplicação - use a função apropriada para sua linguagem de programação que executa comandos de linha de comando. Para .NET, que poderia ser System.Diagnostics.Process.Start (string Command), em Python os.system (cmd) etc.

    net use \\ localhost \ printer_share_name / u: nonguestaccountname nonguestaccountpassowrd "

    Isso mapeará sua impressora como outro usuário (esperançosamente - instantaneamente), usando a permissão nonguestaccountname account para imprimir (a impressão será feita como outro usuário que criamos anteriormente).

  4. Você pode ter que esperar até que o mapeamento da impressora seja feito antes de tentar imprimir, fazer algum tratamento de erros, etc.
  5. Manipule sua impressão na aplicação
  6. Executar:

    net use \\ localhost \ printer_share_name / delete

    Isso irá remover o mapa da sua impressora (esperançosamente - instantaneamente).

A coisa toda deve levar menos de um segundo - enquanto o usuário do tempo pode imprimir de qualquer aplicativo, há um furo na minha ideia , mas usuários normais provavelmente não descobrirão o que está acontecendo e deve ser o suficiente para economizar papel / tinta / toner na empresa ou algo assim:)

Com a impressora de rede - que pode não ser confiável, lenta e depender da qualidade / carga da rede LAN, mas se você mapear uma impressora local como uma impressora de rede - ela deve funcionar muito rápido.

Como escrevi anteriormente - este é um método muito sujo, mas eu não descobri nenhum outro método além do mapeamento de impressora temporário como outro usuário. Isso não é 100% confiável e seguro, mas para alguns propósitos você pode usá-lo.

Tudo o que escrevi acima é possível automatizar com scripts CMD ou VBS no instalador do seu aplicativo.

OUTRO MÉTODO pode estar executando uma impressora compartilhada / não compartilhada, mas você precisa de uma conta adicional do Windows.

Dicas extras:

Compartilhamento de impressora a partir da linha de comando

(substitua en-US no caminho para sua localidade se você não estiver usando janelas em inglês)

Editar:

Você pode ter que testar isso no Vista Basic e XP Home edition, eles podem ter interface de controle de permissão simplificada e alguns recursos estão ocultos (lembro que algumas janelas simplificadas não têm aba "Segurança" ou algo parecido). / p>     

por 21.08.2014 / 13:45