Crie um arquivo em lotes para fazer backup e restaurar impressoras de rede para todos os usuários

2

Eu tenho uma máquina XP com vários perfis. Esses perfis às vezes têm impressoras diferentes mapeadas para cada usuário. Exemplo:

  • O usuário A tem a impressora de rede 1, 2 e 5 mapeada. A impressora 2 é o padrão.
  • O usuário B possui a impressora de rede 1, 4 e 8 mapeada. A impressora 4 é o padrão.
  • O usuário C tem a impressora de rede 2 mapeada. A impressora 2 é o padrão.

Meu ideal seria pesquisar todos os usuários na máquina, listar todas as impressoras mapeadas e retirar as duplicatas para que eu tenha uma lista de impressoras exclusivas mapeadas para a máquina. Idealmente, gostaria de ver qual foi o padrão com mais frequência, mas isso é totalmente opcional. A lista ficaria assim:

Machine.Old

 - Printer 1
 - Printer 2 [Defaulted most often]
 - Printer 4
 - Printer 5
 - Printer 8

Gostaria de restaurar a lista inteira de impressoras para cada usuário em sua nova máquina. Eles estão migrando para uma nova máquina Windows 7.

Eu descobri como fazer isso em máquinas de usuário único, com o seguinte código:

Echo exporting printers
reg export HKCU\Printers\Connections %~d0\%username%\printers.reg
net use >%~d0\%username%\mappings.txt

Echo Importing Printers
reg import %~d0\%username%\printers.reg

O problema é que isso funciona para apenas um usuário. Eu tenho uma conta de administrador e gostaria que isso funcionasse ao mesmo tempo em uma máquina multiprofil.

Wyko
fonte
Você não pode simplesmente repetir o que possui para um único usuário em todas as subpastas de usuários C:\Documents and Settings? No entanto, convém deixar alguns com código, como o Guest.
22412 martineau
Na restauração, posso fazer isso, embora seja bom mapear todos eles de uma vez. É principalmente o backup que é o problema. Eu preciso que todos os usuários tenham todas as impressoras e, às vezes, um usuário que raramente se conecta a esta máquina pode não ter nenhuma impressora mapeada quando precisará de algumas.
10119 Wyko

Respostas:

0

Para acessar as chaves do registro de outros usuários no sistema, você precisará carregar a seção do registro por cada usuário. Consulte reg /? O arquivo de seção do usuário NTUser.datestará localizado na base do diretório de cada usuário. C:\Documents and Settings\<User>\NTUser.dat. Observe que é um arquivo de sistema oculto.

Não tenho tempo para criar um relatório inteiro, mas aqui está como exportar as impressoras para todos os usuários. Isso percorrerá todos os diretórios de usuários, carregará sua seção de registro e exportará as impressoras para um diretório de usuários na base da unidade.

@echo off
pushd "C:\Documments and Settings\"
for /d %%A in (*) do call :ExportPrinters "%%~dpnA" "%~d0\%%~nA"
popd
goto End


:ExportPrinters <UserDir> <Target>
setlocal
set "xUserDir=%~1"
set "xTarget=%~2"
if not defined xUserDir goto :eof
if not exist "%xUserDir%" goto :eof
if not defined xTarget goto :eof
if not exist "%xTarget%" goto :eof
reg load "HKU\TempHive" "%xUserDir%\NTUser.dat"
reg export "HKU\TempHive\Printers\Connections" "%xTarget%\printers.reg"
reg unload "HKU\TempHive"
endlocal
goto :eof


:End
pause
David Ruhmann
fonte