Показать полную графическую версию : Автоматическое определение sid текущего пользователя, и добавление записи в реестр
dark-------13
09-09-2016, 13:10
Привет народ,
Есть bat файл для определение sid текущего пользователя, и добавление записи в реестр:
@echo off
SetLocal
For /F "Tokens=*" %%A In ('Reg Query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList" /s^|Find /i "ProfileList\S-"') Do (
For /F "Tokens=2*" %%B In ('Reg Query "%%A" /s^|Find /i "ProfileImagePath"') Do If "%USERNAME%"=="%%~nC" REG ADD HKEY_USERS\%%~nA\software\tightvnc\server /v UseVncAuthentication /t REG_Dword /d "0x00000000" /f
)
Но есть проблема в том , если в папке с данным бат файлом лежат др. bat файлы или reg файлы, то данные вносятся в реестр левые т.е. 0x00000001 , а должно быть 0x00000000, в чем проблема понять не могу. Когда в папке лежит один данный bat файл данные вносятся в реестр верно (0x00000000).
С какого перепуга данный скрипт запускает рядом лежащие bat файлы , reg файлы ? - У меня по крайней мере такое впечатление складывается. Помогите исправить проблему. Данный bat должен определить sid текущего пользователя и добавить данные в реестр - как раз этому пользователю, и не запускать рядом лежащие bat файлы или др. файлы.
Кстати есть еще вопрос зачем иногда добавляют после /f значение 1>nul 2>&1 ?
dark-------13, каковы названия этих «других бат файлов»? Покажите Вашу ситуацию на реальном примере — упакуйте содержимое каталога с данным пакетным файлом, совместно с «др. bat файлы или reg файлы» и приложите архив к сообщению.
Данный bat должен определить sid текущего пользователя и добавить данные в реестр - как раз этому пользователю, »
Почему, вместо всего этого, Вы просто не используете HKCU?
Кстати есть еще вопрос зачем иногда добавляют… »
Перенаправление станартного потока ошибок в стандартный поток вывода, перенаправление стандартного потока вывода на пустое устройство. Результатом является полное подавление любых сообщений на консоли — как простого вывода, так и сообщений об ошибках. Добавлять можно и до, а не только после.
Почему, вместо всего этого, Вы просто не используете HKCU? »
?
REG ADD HKCU\software\tightvnc\server /v UseVncAuthentication /t REG_Dword /d "0x00000000" /f
dark-------13
12-09-2016, 11:16
Названия файлов add.bat содержимое:
@echo off
for /f %%i in ('wmic path win32_useraccount where localaccount^=true get sid ^| find "-"') do (
REG ADD HKEY_Current_User\%%i\software\tightvnc\server /v UseVncAuthentication /t REG_Dword /d "0x00000000" /f
REG ADD HKEY_Current_User\%%i\software\tightvnc\server /v ExtraPorts /t REG_SZ /d "0x00000000" /f
REG ADD HKEY_Current_User\%%i\software\tightvnc\server /v QueryTimeout /t REG_Dword /d "0x0000001e" /f
REG ADD HKEY_Current_User\%%i\software\tightvnc\server /v QueryAcceptOnTimeout /t REG_Dword /d "0x00000003" /f
REG ADD HKEY_Current_User\%%i\software\tightvnc\server /v LocalInputPriorityTimeout /t REG_Dword /d "0x00000003" /f
REG ADD HKEY_Current_User\%%i\software\tightvnc\server /v LocalInputPriority /t REG_Dword /d "0x00000000" /f
REG ADD HKEY_Current_User\%%i\software\tightvnc\server /v BlockRemoteInput /t REG_Dword /d "0x00000000" /f
REG ADD HKEY_Current_User\%%i\software\tightvnc\server /v BlockLocalInput /t REG_Dword /d "0x00000000" /f
REG ADD HKEY_Current_User\%%i\software\tightvnc\server /v IpAccessControl /t REG_SZ /d "0x00000000" /f
REG ADD HKEY_Current_User\%%i\software\tightvnc\server /v RfbPort /t REG_Dword /d "0x0000007c" /f
REG ADD HKEY_Current_User\%%i\software\tightvnc\server /v HttpPort /t REG_Dword /d "0x000016a8" /f
REG ADD HKEY_Current_User\%%i\software\tightvnc\server /v DisconnectAction /t REG_Dword /d "0x00000000" /f
REG ADD HKEY_Current_User\%%i\software\tightvnc\server /v AcceptRfbConnections /t REG_Dword /d "0x00000001" /f
REG ADD HKEY_Current_User\%%i\software\tightvnc\server /v UseControlAuthentication /t REG_Dword /d "0x000000000" /f
REG ADD HKEY_Current_User\%%i\software\tightvnc\server /v RepeatControlAuthentication /t REG_Dword /d "0x00000000" /f
REG ADD HKEY_Current_User\%%i\software\tightvnc\server /v LoopbackOnly /t REG_Dword /d "0x00000000" /f
REG ADD HKEY_Current_User\%%i\software\tightvnc\server /v AcceptHttpConnections /t REG_Dword /d "0x000000001" /f
REG ADD HKEY_Current_User\%%i\software\tightvnc\server /v LogLevel /t REG_Dword /d "0x00000000" /f
REG ADD HKEY_Current_User\%%i\software\tightvnc\server /v EnableFileTransfers /t REG_Dword /d "0x00000001" /f
REG ADD HKEY_Current_User\%%i\software\tightvnc\server /v RemoveWallpaper /t REG_Dword /d "0x00000001" /f
REG ADD HKEY_Current_User\%%i\software\tightvnc\server /v UseMirrorDriver /t REG_Dword /d "0x00000001" /f
REG ADD HKEY_Current_User\%%i\software\tightvnc\server /v EnableUrlParams /t REG_Dword /d "0x00000001" /f
REG ADD HKEY_Current_User\%%i\software\tightvnc\server /v AlwaysShared /t REG_Dword /d "0x000000000" /f
REG ADD HKEY_Current_User\%%i\software\tightvnc\server /v NeverShared /t REG_Dword /d "0x00000000" /f
REG ADD HKEY_Current_User\%%i\software\tightvnc\server /v DisconnectClients /t REG_Dword /d "0x00000001" /f
REG ADD HKEY_Current_User\%%i\software\tightvnc\server /v PollingInterval /t REG_Dword /d "0x000003e8" /f
REG ADD HKEY_Current_User\%%i\software\tightvnc\server /v AllowLoopback /t REG_Dword /d "0x00000000" /f
REG ADD HKEY_Current_User\%%i\software\tightvnc\server /v VideoRecognitionInterval /t REG_Dword /d "0x00000bb8" /f
REG ADD HKEY_Current_User\%%i\software\tightvnc\server /v SaveLogToAllUsersPath /t REG_Dword /d "0x00000000" /f
REG ADD HKEY_Current_User\%%i\software\tightvnc\server /v GrabTransparentWindows /t REG_Dword /d "0x00000001" /f
REG ADD HKEY_Current_User\%%i\software\tightvnc\server /v RunControlInterface /t REG_Dword /d "0x00000001" /f
REG ADD HKEY_Current_User\%%i\software\tightvnc\server /v VideoClasses /t REG_SZ /d "0x00000000" /f
)
, запускаю add3 а выполняется еще и add, содержимое add3:
@echo off
SetLocal
For /F "Tokens=*" %%A In ('Reg Query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList" /s^|Find /i "ProfileList\S-"') Do (
For /F "Tokens=2*" %%B In ('Reg Query "%%A" /s^|Find /i "ProfileImagePath"') Do If "%USERNAME%"=="%%~nC" REG ADD HKEY_USERS\%%~nA\software\tightvnc\server /v UseVncAuthentication /t REG_Dword /d "0x00000000" /f
)Собственно отрабатывать должен только add3.bat , вообще странно что выполняется и add.bat
Код REG ADD HKCU\software\tightvnc\server /v UseVncAuthentication /t REG_Dword /d "0x00000000" /f не использую потому, как в разделе HKCU - для программ доступна только ветка указанная в bat файле.
dark-------13
12-09-2016, 11:59
Еще вопрос:
Как правильно добавить несколько значений в реестр с помощью скрипта ? Так пойдет ? :
@echo off
SetLocal
For /F "Tokens=*" %%A In ('Reg Query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList" /s^|Find /i "ProfileList\S-"') Do (
For /F "Tokens=2*" %%B In ('Reg Query "%%A" /s^|Find /i "ProfileImagePath"') Do If "%USERNAME%"=="%%~nC" REG ADD HKEY_USERS\%%~nA\software\tightvnc\server /v UseVncAuthentication /t REG_Dword /d "0x00000000" /f 1>nul 2>&1
REG ADD HKEY_USERS\%%~nA\software\tightvnc\server /v RemoveWallpaper /t REG_Dword /d "0x00000000" /f 1>nul 2>&1
)
Столкнулся с такой проблемой при написании bat:
Если после выражения Do If "%USERNAME%"=="%%~nC" не дай бог перенести reg add сразу на др строку то скрипт не выполняется.
Если после оператора Do перенести ( на др строку то скрипт тоже не выполняется.
Есть ли какая-нибудь программа, которая автоматически проверяет корректность написания команд bat файлов ,
или может быть есть подробная справка по расположению операторов и знаков препинания ?
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.