Створіть пакетний файл для резервного копіювання та відновлення мережевих принтерів для всіх користувачів


2

У мене є машина XP з декількома профілями. Такі профілі іноді мають різні принтери, прив'язані до кожного користувача. Приклад:

  • Користувач A має мережевий принтер 1, 2 і 5. Принтер 2 за замовчуванням.
  • Користувач B має мережевий принтер 1, 4 і 8. Принтер 4 за замовчуванням.
  • Користувач C має мережевий принтер 2 зіставлений. Принтер 2 за замовчуванням.

Мій ідеал полягав би в опитуванні кожного користувача на машині, переліку всіх принтерів, які вони відобразили, а потім видалення дублікатів таким чином, щоб у мене був список унікальних принтерів, зіставлених з машиною. В ідеалі я хотів би бачити, який найчастіше було виконано за промовчанням, але це не обов'язково. Список буде виглядати так:

Machine.Old

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

Я хотів би відновити весь список принтерів для кожного користувача на їхній новій машині. Вони переходять на нову машину Windows 7.

Я зрозумів, як це зробити для машин з одним користувачем, з таким кодом:

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

Проблема полягає в тому, що це працює тільки для одного користувача. У мене є обліковий запис адміністратора, і я хотів би, щоб це працювало відразу для багатопрофільної машини.


Ви не можете просто повторити те, що у вас є для одного користувача для всіх вкладених папок користувача C:\Documents and Settings? Можливо, ви захочете залишити деякі жорсткі коди, наприклад, Guest.
martineau

У відновленні я можу це зробити, хоча було б непогано, щоб всі вони відображалися одночасно. Це головним чином резервна копія. Мені потрібно, щоб усі користувачі мали всі принтери, а іноді користувач, який рідко реєструвався на цій машині, не мав жодних друкованих принтерів, коли їм буде потрібно.
Wyko

Відповіді:


0

Щоб отримати доступ до ключів реєстру інших користувачів системи, вам доведеться завантажувати кущ реєстру на кожного користувача. Подивитися reg /? Файл кущів користувача NTUser.dat буде розташовано на базі кожного каталогу користувача. C:\Documents and Settings\<User>\NTUser.dat. Зауважте, що це прихований системний файл.

Я не маю часу для створення цілого звіту, але ось як експортувати принтери для всіх користувачів. Це буде проходити через кожен каталог користувача, завантажувати їх кущ реєстру і експортувати принтери до каталогу користувачів на базі диска.

@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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.