Crie um arquivo de lote 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 as impressoras de rede 1, 2 e 5 mapeadas. Impressora 2 é o padrão.
  • O usuário B tem as impressoras de rede 1, 4 e 8 mapeadas. A impressora 4 é o padrão.
  • O usuário C tem uma impressora de rede 2 mapeada. Impressora 2 é o padrão.

Meu ideal seria pesquisar cada um dos usuários na máquina, listar todas as impressoras que eles mapearam e, em seguida, remover as duplicatas para que eu tenha uma lista de impressoras exclusivas mapeadas na máquina. Idealmente, gostaria de ver qual era o padrão mais frequente, mas isso é totalmente opcional. A lista seria assim:

Machine.Old

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

Eu gostaria de restaurar toda a lista de impressoras para cada usuário em sua nova máquina. Eles estão migrando para uma nova máquina com windows 7.

Eu descobri como fazer isso para 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 de fazer isso funcionar de uma só vez para uma máquina multiprofile.

    
por Wyko 11.12.2012 / 18:18

1 resposta

0

Para acessar as chaves de registro dos outros usuários no sistema, você terá que carregar a seção do registro para cada usuário. Consulte reg /? O arquivo NTUser.dat da seção do usuário estará localizado na base do diretório de cada usuário. %código%. Note que é um arquivo de sistema oculto.

Eu 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
    
por 13.12.2012 / 02:30