|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Windows 7-Неработает (.bat) код: "разрешить редактор реестра" |
|
CMD/BAT - [решено] Windows 7-Неработает (.bat) код: "разрешить редактор реестра"
|
Пользователь Сообщения: 80 |
Таким (.bat) скриптом я запретил вызов редактора реестра/ "RegEdit", и на эту функцию мне никаких прав администратора не понадобились.
@Echo Off Reg.exe add "HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\System" /v "DisableRegistryTools" /t REG_DWORD /d "1" /f Exit /b Вот пример скрипта, "BatchGotAdmin". @echo off mkdir "%windir%\BatchGotAdmin" if '%errorlevel%' == '0' ( rmdir "%windir%\BatchGotAdmin" & goto gotAdmin ) else ( goto UACPrompt ) :UACPrompt echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs" echo UAC.ShellExecute %0, "", "", "runas", 1 >> "%temp%\getadmin.vbs" "%temp%\getadmin.vbs" exit /B :gotAdmin if exist "%temp%\getadmin.vbs" ( del "%temp%\getadmin.vbs" ) pushd "%CD%" CD /D "%~dp0" Reg.exe add "HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\System" /v "DisableRegistryTools" /t REG_DWORD /d "0" /f |
|
Отправлено: 19:10, 24-06-2015 |
Пользователь Сообщения: 80
|
Профиль | Отправить PM | Цитировать Цитата Iska:
Но если запретить, "Cmd.exe" то при запуске, "bat" файла- "Cmd.exe" выдает вот это: "The Command prompt has ben disabled by your administrator", значит "бат" скрипт, и команды "Cmd" не-запустить. |
|
Последний раз редактировалось turbolover, 23-07-2015 в 01:17. Отправлено: 21:21, 25-06-2015 | #11 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 80
|
Профиль | Отправить PM | Цитировать Вот вариант на Vbs.
Запретить консоль, "Cmd". Option Explicit '~ On Error Resume Nex Dim objReg Set objReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv") RegWrite "HKCU\Software\Policies\Microsoft\Windows\System", "DisableCMD", "REG_DWORD", 1 Function RegWrite(reg_keyname, reg_valuename,reg_type,ByVal reg_value) Dim aRegKey, Return aRegKey = RegSplitKey(reg_keyname) If IsArray(aRegKey) = 0 Then RegWrite = 0 Exit Function End If Return = RegWriteKey(aRegKey) If Return = 0 Then RegWrite = 0 Exit Function End If Select Case reg_type Case "REG_SZ" Return = objReg.SetStringValue(aRegKey(0),aRegKey(1),reg_valuename,reg_value) Case "REG_EXPAND_SZ" Return = objReg.SetExpandedStringValue(aRegKey(0),aRegKey(1),reg_valuename,reg_value) Case "REG_BINARY" If IsArray(reg_value) = 0 Then reg_value = Array() Return = objReg.SetBinaryValue(aRegKey(0),aRegKey(1),reg_valuename,reg_value) Case "REG_DWORD" If IsNumeric(reg_value) = 0 Then reg_value = 0 Return = objReg.SetDWORDValue(aRegKey(0),aRegKey(1),reg_valuename,reg_value) Case "REG_MULTI_SZ" If IsArray(reg_value) = 0 Then If Len(reg_value) = 0 Then reg_value = Array() Else reg_value = Array(reg_value) End If End If Return = objReg.SetMultiStringValue(aRegKey(0),aRegKey(1),reg_valuename,reg_value) 'Case "REG_QWORD" 'Return = oReg.SetQWORDValue(aRegKey(0),aRegKey(1),reg_valuename,reg_value) Case Else RegWrite = 0 Exit Function End Select If (Return <> 0) Or (Err.Number <> 0) Then RegWrite = 0 Exit Function End If RegWrite = 1 End Function Function RegWriteKey(RegKeyName) Dim Return If IsArray(RegKeyName) = 0 Then RegKeyName = RegSplitKey(RegKeyName) End If If (IsArray(RegKeyName) = 0) Or (UBound(RegKeyName) <> 1) Then RegWriteKey = 0 Exit Function End If Return = objReg.CreateKey(RegKeyName(0),RegKeyName(1)) If (Return <> 0) Or (Err.Number <> 0) Then RegWriteKey = 0 Exit Function End If RegWriteKey = 1 End Function Function RegDelete(reg_keyname, reg_valuename) Dim Return,aRegKey aRegKey = RegSplitKey(reg_keyname) If IsArray(aRegKey) = 0 Then RegDelete = 0 Exit Function End If Return = objReg.DeleteValue(aRegKey(0),aRegKey(1),reg_valuename) If (Return <> 0) And (Err.Number <> 0) Then RegDelete = 0 Exit Function End If RegDelete = 1 End Function Function RegDeleteKey(reg_keyname) Dim Return,aRegKey aRegKey = RegSplitKey(reg_keyname) If IsArray(aRegKey) = 0 Then RegDeleteKey = 0 Exit Function End If 'On Error Resume Next Return = RegDeleteSubKey(aRegKey(0),aRegKey(1)) 'On Error Goto 0 If Return = 0 Then RegDeleteKey = 0 Exit Function End If RegDeleteKey = 1 End Function Function RegDeleteSubKey(strRegHive, strKeyPath) Dim Return,arrSubkeys,strSubkey objReg.EnumKey strRegHive, strKeyPath, arrSubkeys If IsArray(arrSubkeys) <> 0 Then For Each strSubkey In arrSubkeys RegDeleteSubKey strRegHive, strKeyPath & "\" & strSubkey Next End If Return = objReg.DeleteKey(strRegHive, strKeyPath) If (Return <> 0) Or (Err.Number <> 0) Then RegDeleteSubKey = 0 Exit Function End If RegDeleteSubKey = 1 End Function Function RegSplitKey(RegKeyName) Dim strHive, strInstr, strLeft strInstr=InStr(RegKeyName,"\") If strInstr = 0 Then Exit Function strLeft=left(RegKeyName,strInstr-1) Select Case strLeft Case "HKCR","HKEY_CLASSES_ROOT" strHive = &H80000000 Case "HKCU","HKEY_CURRENT_USER" strHive = &H80000001 Case "HKLM","HKEY_LOCAL_MACHINE" strHive = &H80000002 Case "HKU","HKEY_USERS" strHive = &H80000003 Case "HKCC","HKEY_CURRENT_CONFIG" strHive = &H80000005 Case Else Exit Function End Select RegSplitKey = Array(strHive,Mid(RegKeyName,strInstr+1)) End Function Function RequireAdmin() Dim reg_valuename, WShell, Cmd, CmdLine, I GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv")_ .EnumValues &H80000003, "S-1-5-19\Environment", reg_valuename If IsArray(reg_valuename) <> 0 Then RequireAdmin = 1 Exit Function End If Set Cmd = WScript.Arguments For I = 0 to Cmd.Count - 1 If Cmd(I) = "/admin" Then Wscript.Echo "To script you must have administrator rights!" 'RequireAdmin = 0 'Exit Function WScript.Quit End If CmdLine = CmdLine & Chr(32) & Chr(34) & Cmd(I) & Chr(34) Next CmdLine = CmdLine & Chr(32) & Chr(34) & "/admin" & Chr(34) Set WShell= WScript.CreateObject( "WScript.Shell") CreateObject("Shell.Application").ShellExecute WShell.ExpandEnvironmentStrings(_ "%SystemRoot%\System32\WScript.exe"),Chr(34) & WScript.ScriptFullName & Chr(34) & CmdLine, "", "runas" WScript.Quit End Function Option Explicit '~ On Error Resume Nex Dim objReg Set objReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv") RegWrite "HKCU\Software\Policies\Microsoft\Windows\System", "DisableCMD", "REG_DWORD", 0 Function RegWrite(reg_keyname, reg_valuename,reg_type,ByVal reg_value) Dim aRegKey, Return aRegKey = RegSplitKey(reg_keyname) If IsArray(aRegKey) = 0 Then RegWrite = 0 Exit Function End If Return = RegWriteKey(aRegKey) If Return = 0 Then RegWrite = 0 Exit Function End If Select Case reg_type Case "REG_SZ" Return = objReg.SetStringValue(aRegKey(0),aRegKey(1),reg_valuename,reg_value) Case "REG_EXPAND_SZ" Return = objReg.SetExpandedStringValue(aRegKey(0),aRegKey(1),reg_valuename,reg_value) Case "REG_BINARY" If IsArray(reg_value) = 0 Then reg_value = Array() Return = objReg.SetBinaryValue(aRegKey(0),aRegKey(1),reg_valuename,reg_value) Case "REG_DWORD" If IsNumeric(reg_value) = 0 Then reg_value = 0 Return = objReg.SetDWORDValue(aRegKey(0),aRegKey(1),reg_valuename,reg_value) Case "REG_MULTI_SZ" If IsArray(reg_value) = 0 Then If Len(reg_value) = 0 Then reg_value = Array() Else reg_value = Array(reg_value) End If End If Return = objReg.SetMultiStringValue(aRegKey(0),aRegKey(1),reg_valuename,reg_value) 'Case "REG_QWORD" 'Return = oReg.SetQWORDValue(aRegKey(0),aRegKey(1),reg_valuename,reg_value) Case Else RegWrite = 0 Exit Function End Select If (Return <> 0) Or (Err.Number <> 0) Then RegWrite = 0 Exit Function End If RegWrite = 1 End Function Function RegWriteKey(RegKeyName) Dim Return If IsArray(RegKeyName) = 0 Then RegKeyName = RegSplitKey(RegKeyName) End If If (IsArray(RegKeyName) = 0) Or (UBound(RegKeyName) <> 1) Then RegWriteKey = 0 Exit Function End If Return = objReg.CreateKey(RegKeyName(0),RegKeyName(1)) If (Return <> 0) Or (Err.Number <> 0) Then RegWriteKey = 0 Exit Function End If RegWriteKey = 1 End Function Function RegDelete(reg_keyname, reg_valuename) Dim Return,aRegKey aRegKey = RegSplitKey(reg_keyname) If IsArray(aRegKey) = 0 Then RegDelete = 0 Exit Function End If Return = objReg.DeleteValue(aRegKey(0),aRegKey(1),reg_valuename) If (Return <> 0) And (Err.Number <> 0) Then RegDelete = 0 Exit Function End If RegDelete = 1 End Function Function RegDeleteKey(reg_keyname) Dim Return,aRegKey aRegKey = RegSplitKey(reg_keyname) If IsArray(aRegKey) = 0 Then RegDeleteKey = 0 Exit Function End If 'On Error Resume Next Return = RegDeleteSubKey(aRegKey(0),aRegKey(1)) 'On Error Goto 0 If Return = 0 Then RegDeleteKey = 0 Exit Function End If RegDeleteKey = 1 End Function Function RegDeleteSubKey(strRegHive, strKeyPath) Dim Return,arrSubkeys,strSubkey objReg.EnumKey strRegHive, strKeyPath, arrSubkeys If IsArray(arrSubkeys) <> 0 Then For Each strSubkey In arrSubkeys RegDeleteSubKey strRegHive, strKeyPath & "\" & strSubkey Next End If Return = objReg.DeleteKey(strRegHive, strKeyPath) If (Return <> 0) Or (Err.Number <> 0) Then RegDeleteSubKey = 0 Exit Function End If RegDeleteSubKey = 1 End Function Function RegSplitKey(RegKeyName) Dim strHive, strInstr, strLeft strInstr=InStr(RegKeyName,"\") If strInstr = 0 Then Exit Function strLeft=left(RegKeyName,strInstr-1) Select Case strLeft Case "HKCR","HKEY_CLASSES_ROOT" strHive = &H80000000 Case "HKCU","HKEY_CURRENT_USER" strHive = &H80000001 Case "HKLM","HKEY_LOCAL_MACHINE" strHive = &H80000002 Case "HKU","HKEY_USERS" strHive = &H80000003 Case "HKCC","HKEY_CURRENT_CONFIG" strHive = &H80000005 Case Else Exit Function End Select RegSplitKey = Array(strHive,Mid(RegKeyName,strInstr+1)) End Function Function RequireAdmin() Dim reg_valuename, WShell, Cmd, CmdLine, I GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv")_ .EnumValues &H80000003, "S-1-5-19\Environment", reg_valuename If IsArray(reg_valuename) <> 0 Then RequireAdmin = 1 Exit Function End If Set Cmd = WScript.Arguments For I = 0 to Cmd.Count - 1 If Cmd(I) = "/admin" Then Wscript.Echo "To script you must have administrator rights!" 'RequireAdmin = 0 'Exit Function WScript.Quit End If CmdLine = CmdLine & Chr(32) & Chr(34) & Cmd(I) & Chr(34) Next CmdLine = CmdLine & Chr(32) & Chr(34) & "/admin" & Chr(34) Set WShell= WScript.CreateObject( "WScript.Shell") CreateObject("Shell.Application").ShellExecute WShell.ExpandEnvironmentStrings(_ "%SystemRoot%\System32\WScript.exe"),Chr(34) & WScript.ScriptFullName & Chr(34) & CmdLine, "", "runas" WScript.Quit End Function |
Отправлено: 21:53, 25-06-2015 | #12 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата turbolover:
|
|
Отправлено: 22:56, 25-06-2015 | #13 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Разное - Не могу запустить редактор реестра через панель управления "Пуск" | eqzeshka | Microsoft Windows 8 и 8.1 | 31 | 06-03-2015 17:19 | |
VBS/WSH/JS - [решено] Как добавить "сложное" значение в "бинарный" параметр реестра с помощью WSH | 13Demon | Скриптовые языки администрирования Windows | 1 | 10-02-2009 09:47 | |
Разное - "Очистка реестра" Vista Manager, удаляет нужный ключ реестра. | amzir | Microsoft Windows Vista | 3 | 21-11-2008 21:56 | |
[решено] неработает функция "звукозапись" | rustam1107 | Microsoft Windows Vista | 6 | 03-05-2007 01:20 | |
Самопроизвольно запрещаются права на "Полный доступ"/"Чтение" различных веток реестра | xoomer | Microsoft Windows 2000/XP | 2 | 23-04-2007 10:29 |
|