![]() |
Удаление ветки реестра с плавающим именем
Доброго времени суток. Я видел много примеров решающих мою задачу, но не могу вникнуть, как использовать утилиту findstr.
Задача: В ветке реестра: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList существует плавающий SID с окончанием 1000, 1001, 1002, 1003, 1004, 100...* Нужно получить имя SIDа с нужным окончанием и удалить его. За ранее, спасибо за помощь! |
Код:
@echo off |
Не отрабатывает, находятся SIDы с неверным индификатором, или скрипт нужно было дополнить?
==================================================== Результат работы скрипта: Скрытый текст
C:\Users\n7700-00681>@echo off C:\Users\n7700-00681>setlocal enabledelayedexpansion C:\Users\n7700-00681>set key="HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList" C:\Users\n7700-00681>set get="HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\%i" C:\Users\n7700-00681>for /F "tokens=7 delims=\" %i in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList" | findstr /irc:"s-[0-1]*"') do ( set "sid=%i" if "!sid:~-3,1!" NEQ "-" if "!sid:~-4,1!" NEQ "-" (echo "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\%i" ) ) C:\Users\n7700-00681>( set "sid=S-1-5-18" if "!sid:~-3,1!" NEQ "-" if "!sid:~-4,1!" NEQ "-" (echo "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\S-1-5-18" ) ) C:\Users\n7700-00681>( set "sid=S-1-5-19" if "!sid:~-3,1!" NEQ "-" if "!sid:~-4,1!" NEQ "-" (echo "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\S-1-5-19" ) ) C:\Users\n7700-00681>( set "sid=S-1-5-20" if "!sid:~-3,1!" NEQ "-" if "!sid:~-4,1!" NEQ "-" (echo "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\S-1-5-20" ) ) C:\Users\n7700-00681>( set "sid=S-1-5-21-116022207-583602576-2121419680-1346097.bak" if "!sid:~-3,1!" NEQ "-" if "!sid:~-4,1!" NEQ "-" (echo "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\S-1-5-21-116022207-583602576-2121419680-1346097.bak" ) ) "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\S-1-5-21-116022207-583602576-2121419680-1346097.bak" C:\Users\n7700-00681>( set "sid=S-1-5-21-116022207-583602576-2121419680-1346626.bak" if "!sid:~-3,1!" NEQ "-" if "!sid:~-4,1!" NEQ "-" (echo "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\S-1-5-21-116022207-583602576-2121419680-1346626.bak" ) ) "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\S-1-5-21-116022207-583602576-2121419680-1346626.bak" C:\Users\n7700-00681>( set "sid=S-1-5-21-116022207-583602576-2121419680-2218079" if "!sid:~-3,1!" NEQ "-" if "!sid:~-4,1!" NEQ "-" (echo "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\S-1-5-21-116022207-583602576-2121419680-2218079" ) ) "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\S-1-5-21-116022207-583602576-2121419680-2218079" C:\Users\n7700-00681>( set "sid=S-1-5-21-3219155785-3520165716-3308996480-1000" if "!sid:~-3,1!" NEQ "-" if "!sid:~-4,1!" NEQ "-" (echo "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\S-1-5-21-3219155785-3520165716-3308996480-1000" ) ) "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\S-1-5-21-3219155785-3520165716-3308996480-1000" C:\Users\n7700-00681>( set "sid=S-1-5-21-3219155785-3520165716-3308996480-1004" if "!sid:~-3,1!" NEQ "-" if "!sid:~-4,1!" NEQ "-" (echo "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\S-1-5-21-3219155785-3520165716-3308996480-1004" ) ) "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\S-1-5-21-3219155785-3520165716-3308996480-1004" C:\Users\n7700-00681>( set "sid=S-1-5-21-3219155785-3520165716-3308996480-500" if "!sid:~-3,1!" NEQ "-" if "!sid:~-4,1!" NEQ "-" (echo "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\S-1-5-21-3219155785-3520165716-3308996480-500" ) ) C:\Users\n7700-00681>( set "sid=S-1-5-21-3908561691-2003391815-3342993206-42802" if "!sid:~-3,1!" NEQ "-" if "!sid:~-4,1!" NEQ "-" (echo "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\S-1-5-21-3908561691-2003391815-3342993206-42802" ) ) "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\S-1-5-21-3908561691-2003391815-3342993206-42802" C:\Users\n7700-00681>( set "sid=S-1-5-21-3908561691-2003391815-3342993206-43404" if "!sid:~-3,1!" NEQ "-" if "!sid:~-4,1!" NEQ "-" (echo "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\S-1-5-21-3908561691-2003391815-3342993206-43404" ) ) "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\S-1-5-21-3908561691-2003391815-3342993206-43404" C:\Users\n7700-00681>endlocal C:\Users\n7700-00681>exit /b Вру, в куче мусора нашёл вывод: "sid=S-1-5-21-3219155785-3520165716-3308996480-1004" А как теперь его на удаление пристроить? На разных ПК, имена буду разные, кроме последних ЧЕТЫРЕХ цыфер... То есть из мусора к удалению идут 2 записи: 1) S-1-5-21-3219155785-3520165716-3308996480-1004 2) S-1-5-21-3219155785-3520165716-3308996480-1000 как бы это реализовать? |
DarckSol,
Код:
@echo off |
Цитата:
C:\Documents and Settings\s1>"C:\Documents and Settings\s1\Рабочий стол\prof.bat" reg delete HKEY_LOCAL_MACHINE\software\microsoft\windows nt\currentversion\profilelist\S-1-5-21-861567501-616249376-1417001333-1003 /f Собственно, для выполнения команды удаления, нужно изменить синтаксис вывода на исполнение..., как это сделать? -------------- ПС: И батник малость подправил на поиск нужного, а то он лишнее выводил... for /f "tokens=*" %%i in ('" reg query "%key%" | findstr "S-1-5-21-.*-.*-.*-1[0-9]*$" "') d |
Так поможет кто допилить скрипт?
|
не решено
|
DarckSol, А в чем вообще ваш вопрос?
|
Цитата:
|
Цитата:
|
Время: 22:23. |
Время: 22:23.
© OSzone.net 2001-