A resposta (para o meu caso) foi surpreendentemente simples e lógica: Conceda a permissão Gerenciar Impressoras para o usuário ou grupo.
Windows 7 Professional, 32 bits
Temos uma impressora especializada para tarefas específicas de produção. O driver dessa impressora apresenta um problema estranho, no qual algumas das opções nas Preferências da impressora estão desabilitadas (por exemplo, Botão desativado, esmaecido) quando um usuário com permissões limitadas (grupo "Usuários") está conectado quando um usuário é membro do grupo Administradores está logado, as opções estão habilitadas. Entrei em contato com o fabricante da impressora, mas não estou obtendo muita cooperação deles.
Instalei o Process Explorer para procurar por alças que possam me dar uma pista sobre a quais arquivos o driver pode precisar de permissões elevadas, mas não consegui ver nenhuma pista.
Minha pergunta é: como mais posso determinar quais permissões um driver requer?
Eu vi esse problema se manifestar de algumas maneiras diferentes. Ele quase sempre volta para drivers de impressora antigos ou drivers especializados que não suportam totalmente o UAC.
Algumas coisas gerais para verificar:
printui.dll
em um script de login? Os drivers mais antigos, às vezes, não funcionam bem nessa situação devido ao UAC. Tente instalar a impressora por usuário para testar essa teoria.
I installed Process Explorer to look for any handles that may give me a clue to what files the driver may need elevated permissions for, however I couldn't see any clues.
Você está no caminho certo, está apenas usando a ferramenta errada. O Process Explorer mostrará o que cada processo tem aberto, o que é ótimo para solucionar problemas, como problemas de versão de DLLs, mas você precisa de uma magia mais profunda Dê uma olhada em ProcMon . A melhor coisa sobre o ProcMon é que ele vai gravar praticamente tudo o que está acontecendo no seu computador baseado em Windows, a coisa horrível sobre o ProcMon é que ele gravará praticamente tudo o que está acontecendo no seu computador. Estamos falando de dezenas de milhões de eventos.
Comece filtrando os eventos gerados apenas pelo spooler de impressão ( spoolsv.exe
) quando você estiver conectado como usuário no grupo Administradores. Vá para a parte de opções de Preferências da impressora. Aguarde até que o número de eventos que estão sendo gravados diminua, exclua todos os eventos anteriores e, em seguida, comece a alternar as opções desativadas para seus usuários sem privilégios. Então pare imediatamente de registrar. Isso deve limitar os eventos que você precisa analisar até a quantidade gerenciável. A configuração Preferências da impressora provavelmente é apenas as chaves do registro, então talvez comece por aí. Se você puder encontrar a Chave do Registro específica, filtre seus eventos apenas para ela e, em seguida, teste as configurações novamente para confirmar que você a encontrou. Em seguida, apenas conceda a permissão de grupo BUILTIN \ Users na Chave do Registro ou nas Chaves.
Infelizmente, é mais fácil falar do que fazer. A menos que você tenha uma compreensão bastante profunda do Windows, geralmente é um caso de tentativa e erro.