Автор Тема: Работа с ПАНКБАСТЕРОМ (PunkBuster)  (Прочитано 7975 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн LEND

  • Пользователь
  • **
  • Сообщений: 95
  • Карма: 155
  • Истина как всегда где-то рядом
    • Просмотр профиля
Не знаю в тему или нет но иногда ПАНКБАСТЕР (PunkBuster) достает.
Панкбастер может быть введен в с помощью служб СПИСОК ПРОЦЕССОРОВ PnkBstrA.exe и PnkBstrB.exe при загрузке самой ОС. PnkBstrA.exe и PnkBstrB.exe могут находиться в C:\WINDOWS\System32
Для игры Unreal Tournament 3, иногда мне приходится удалять процессы PnkBstrA.exe и PnkBstrB.exe, (останавливать эти две службы). Unreal Tournament 3 может с ними не работать и ВЫЛЕТАЕТ.
Поднадоело удалять эти процессы и отключать службы. Я написал программу которая прекращает работу этих служб. Перед тем как запустить те ИГРЫ которые плохо работают с панкбастером, активизируйте программу StopPb.vbs
С помощью этой программы ЭТИ две службы останавливаются и автоматически удаляются из списка процессов. Можно сделать маленький BAT файл, который перед запуском UT3.exe запускает
скрипт StopPb.vbs

Листинг программы StopPb.vbs (файл StopPb.vbs)
'*******************************************************************
' Имя: StopPb.vbs
' Author:  LEND
' Язык: VBScript
' Описание: Остановка служб ПАНКБАСТЕРА
'*******************************************************************
Option Explicit

' Объявляем переменные
Dim strComputer       ' Имя компьютера
Dim strNamespace      ' Имя пространства имен
Dim objWMIService     ' Объект SWbemServices   
Dim colServices       ' Коллекция экземпляров класса WMI
Dim objService        ' Элемент коллекции
Dim strResult         ' Результирующая строка
Dim WshShell          ' Объект WshShell
Dim theNotepad        ' Объект WshScriptExec

' Объявляем константы
Const wbemFlagForwardOnly = 32
Const wbemFlagReturnImmediately = 16
'********************** Начало *************************************
' Присваиваем начальные значения переменным
strComputer = "."
strNamespace = "Root\CIMV2"

' Подключаемся к пространству имен WMI
Set objWMIService = GetObject("WinMgmts:\\" & _
                                   strComputer & "\" & strNamespace)

Set colServices = objWMIService.ExecQuery("SELECT * FROM Win32_Service"_
                  ,,wbemFlagReturnImmediately+wbemFlagForwardOnly)
For Each objService In colServices
  if objService.Name="PnkBstrA" then
     objService.StopService()
  end if
Next

Set colServices = objWMIService.ExecQuery("SELECT * FROM Win32_Service"_
                  ,,wbemFlagReturnImmediately+wbemFlagForwardOnly)
For Each objService In colServices
  if objService.Name="PnkBstrB" then
     objService.StopService()
  end if
Next
'************************* Конец ***********************************


БАТ файл _UT3start.bat
rem ******** Начало *********
@Echo off
CLS
StopPb.vbs
UT3.exe
rem ******** Конец *********


Файлы StopPb.vbs и _UT3start.bat переносим в директорию
X:\..\Unreal Tournament 3\Binaries
где X - буквенное имя диска
Делаем ярлык на _UT3start.bat и играем
То же проделываем и с другими игрушками КОТОРЫЕ плохо работают с ПАНКБАСТЕРОМ

Если ВЫ играете в Call of Duty(R) 4 - Modern Warfare(TM) то она сама снова включает ПАНКБАСТЕР
Вообще по хорошему службу ПАНКБАСТЕР отключать (службы PnkBstrA.exe и PnkBstrB.exe) при загрузке ОС - поставить в РУЧНУЮ.
Если ВЫ не играете в игры то нечего им висеть в СПИСКЕ ПРОЦЕССОВ. Они занимают память. Для активизации их можно запустить игру Call of Duty(R) 4 - Modern Warfare(TM)
Если у ВАС такой игры нет, а другая игра потребовала ПАНКБАСТЕР то я написал
программу для запуска этих двух служб (службы PnkBstrA.exe и PnkBstrB.exe)

Листинг программы ActivePb.vbs (файл ActivePb.vbs)
'*******************************************************************
' Имя: ActivePb.vbs
' Author:  LEND
' Язык: VBScript
' Описание: Запуск служб ПАНКБАСТЕРА
'*******************************************************************
Option Explicit

' Объявляем переменные
Dim strComputer        ' Имя компьютера
Dim strNamespace      ' Имя пространства имен
Dim objWMIService     ' Объект SWbemServices   
Dim colServices         ' Коллекция экземпляров класса WMI
Dim objService          ' Элемент коллекции
Dim strResult            ' Результирующая строка
Dim WshShell            ' Объект WshShell
Dim theNotepad        ' Объект WshScriptExec

' Объявляем константы
Const wbemFlagForwardOnly = 32
Const wbemFlagReturnImmediately = 16
'********************** Начало *************************************
' Присваиваем начальные значения переменным
strComputer = "."
strNamespace = "Root\CIMV2"

' Подключаемся к пространству имен WMI
Set objWMIService = GetObject("WinMgmts:\\" & _
                                   strComputer & "\" & strNamespace)

Set colServices = objWMIService.ExecQuery("SELECT * FROM Win32_Service"_
                  ,,wbemFlagReturnImmediately+wbemFlagForwardOnly)
For Each objService In colServices
  if objService.Name="PnkBstrA" then
     objService.StartService()
  end if
Next

Set colServices = objWMIService.ExecQuery("SELECT * FROM Win32_Service"_
                  ,,wbemFlagReturnImmediately+wbemFlagForwardOnly)
For Each objService In colServices
  if objService.Name="PnkBstrB" then
     objService.StartService()
  end if
Next
'************************* Конец ***********************************

Запускаете программу ActivePb.vbs, а она запускает службы ПАНКБАСТЕРА.
Вы также можете вытащить ярлыки этих программ на рабочий стол.
Кто может еще что то добавить то давайте... Вообщем тема открыта для обсуждения
В мире временном, сущность которого - тлен,
Не сдавайся вещам несущественным в плен. © О.Х.


Melkor

  • Гость
Re: Работа с ПАНКБАСТЕРОМ (PunkBuster)
« Ответ #1 : 01.03.08, 21:05:40 »
Нет, речи нету, WMI - фантастический инструмент. И скриптинг, безусловно, та вещь которую нужно знать и которой нужно заниматься.
Только вот , если не секрет, зачем такой код? Вашу задачу решает одна-единственная команда. net stop. Нафига vbs-то использовать?
Неимхо, что простые задачи нужно решать именно простыми методами.

Оффлайн LEND

  • Пользователь
  • **
  • Сообщений: 95
  • Карма: 155
  • Истина как всегда где-то рядом
    • Просмотр профиля
Re: Работа с ПАНКБАСТЕРОМ (PunkBuster)
« Ответ #2 : 01.03.08, 22:42:45 »
Вот это ДА. Да причем тут VBS скрипт. Я просто искал способ избавиться от ПАНКБАСТЕРА в некоторых ИГРАХ. Конечно можно войти в СЛУЖБЫ и отключить службы ПАНКБАСТЕРА. Но я при загрузке игры которая плохо с ним работала всегда забывал это сделать, да и надоедало это. Поэтому и написал такие программы. Взял в пример Unreal Tournament 3 - иногда в него играю. Если ВЫ внимательно читали то я написал BAT файл как обойти такую забывчивость. Возможно есть другие варианты и способы корректно работать с PunkBuster. То ему версия не нравится (PunkBuster) и вышибает прямо в игре. То игра сразу вылетает. Поэтому я и думаю, может есть другие способы корректно с ним работать. Я просто дал свое ВИДЕНЬЕ как могу выйти из этого положения. Мне легче написать программу чем много раз включать и отключать его в СПИСКЕ СЛУЖБ или в СПИСКЕ ПРОЦЕССОВ. Да и забыть это можно при входе в следующую ИГРУ. Если ВЫ знаете еще что нибудь, т.е. как с ним корректно работать, то напишите это. И причем тут VBS скрипт. Возможно я это не в этом разделе написал, но стесняюсь спросить а зачем net stop? Я только работал со службами. Если у ВАС есть другие варианты и способы - предложите и может они удобнее.
С уважением
LEND
« Последнее редактирование: 02.03.08, 00:06:38 от LEND »
В мире временном, сущность которого - тлен,
Не сдавайся вещам несущественным в плен. © О.Х.

Оффлайн LEO

  • Ветеран
  • *****
  • Сообщений: 4417
  • Карма: 310
  • Пол: Мужской
    • Просмотр профиля
Re: Работа с ПАНКБАСТЕРОМ (PunkBuster)
« Ответ #3 : 02.03.08, 00:06:24 »
LEND
все просто. посчитайте количество строк в вашем скрипте. сколько на это времени ушло?

а сколько уйдет на написание ОДНОЙ строчки "net stop <как там служба называется>"

и батник ваш будет выглядеть так:

net stop <как там служба называется>
UT3.exe


и никаких скриптов
http://is.gd/fpTeSMПродам книжки про Ajax и ASP.NET, http://is.gd/lDL64HПриглашаю в Dropbox

Оффлайн LEO

  • Ветеран
  • *****
  • Сообщений: 4417
  • Карма: 310
  • Пол: Мужской
    • Просмотр профиля
Re: Работа с ПАНКБАСТЕРОМ (PunkBuster)
« Ответ #4 : 02.03.08, 00:08:42 »
ой, извините. службы 2 штуки))

net stop PnkBstrA
net stop PnkBstrB
UT3.exe

http://is.gd/fpTeSMПродам книжки про Ajax и ASP.NET, http://is.gd/lDL64HПриглашаю в Dropbox

Melkor

  • Гость
Re: Работа с ПАНКБАСТЕРОМ (PunkBuster)
« Ответ #5 : 02.03.08, 00:09:26 »
Вот это ДА. Да причем тут VBS скрипт. Я просто искал способ избавиться от ПАНКБАСТЕРА в некоторых ИГРАХ. Конечно можно войти в СЛУЖБЫ и отключить службы ПАНКБАСТЕРА. Но я при загрузке игры которая плохо с ним работала всегда забывал это сделать, да и надоедало это. Поэтому и написал такие программы. Взял в пример Unreal Tournament 3 - иногда в него играю. Если ВЫ внимательно читали то я написал BAT файл как обойти такую забывчивость. Возможно есть другие варианты и способы корректно работать с PunkBuster. То ему версия не нравится (PunkBuster) и вышибает прямо в игре. То игра сразу вылетает. Поэтому я и думаю, может есть другие способы корректно с ним работать. Я просто дал свое ВИДЕНЬЕ как могу выйти из этого положения. Мне легче написать программу чем много раз включать и отключать его в СПИСКЕ СЛУЖБ или в СПИСКЕ ПРОЦЕССОВ. Да и забыть это можно при входе в следующую ИГРУ. Если ВЫ знаете еще что нибудь, т.е. как с ним корректно работать, то напишите это. И причем тут VBS скрипт. Возможно я это не в этом разделе написал, но стесняюсь спросить а зачем net stop? Я толко работал со службами. Если у ВАС есть другие варианты и способы - предложите и может они удобнее.
С уважением
LEND
Имелось в виду, что весь ваш stopPB.vbs, который упомянается в батнике, можно было заменить на одну единственную строку. net stop . Стандартная команда винды использующаяся для остановки служб.
Делает ровно то же самое, что и весь скрипт.
PS Не сочтите за наглось. И ничего личного. Нередко приходится видеть в деловой переписке стиль общения, совпадающий с вашим. Все никак руки не доходят спросить best practics по использованию подобного стиля. И вообще аргументацию в пользу его использования. Может вы линком поделитесь? Спасибо.

Оффлайн LEND

  • Пользователь
  • **
  • Сообщений: 95
  • Карма: 155
  • Истина как всегда где-то рядом
    • Просмотр профиля
Re: Работа с ПАНКБАСТЕРОМ (PunkBuster)
« Ответ #6 : 02.03.08, 13:07:15 »
Ну чтож, я внимательно все прочитал, но так и не уяснил как еще с ним можно работать. Я привел только способ чтобы обойти его при загрузке некоторых игр с которыми он плохо работает. Программы или консольные комманды самого WINDOWS каждый может преподнести по своему, но ведь не в этом ДЕБАТ всей ТЕМЫ. Мне например (мне) не очень приятно когда эти две службы запускаются прямо с загрузкой ОС. Конечно можно их удалить. Я удалял, но при работе определенных игр они снова появляются. Я ставлю их в ручной режим. Но есть игры которые снова их устанавливают в АВТО. Поэтому я не преследую то, как написать программу или создать КОНСОЛЬНУЮ КОММАНДУ.
Есть ли другие способы, варианты  или методы с ним корректно работать. Конфигурируется ли он ПАНКБАСТЕР и т.д.
В мире временном, сущность которого - тлен,
Не сдавайся вещам несущественным в плен. © О.Х.

Оффлайн LEND

  • Пользователь
  • **
  • Сообщений: 95
  • Карма: 155
  • Истина как всегда где-то рядом
    • Просмотр профиля
Re: Работа с ПАНКБАСТЕРОМ (PunkBuster)
« Ответ #7 : 02.03.08, 13:14:07 »
Melkor
Я не пользуюсь многими консольными коммандами WINDOW из за их малофункциональности.
Приведу пример:
Так при загрузке самой WINDOWS я эти две службы ставлю в ручной режим или отключаю в СПИСКЕ ПРОЦЕССОВ.
При загрузке игры Call of Duty(R) 4 - Modern Warfare(TM), сама работа игры ставит процесс PnkBstrB.exe в автоматический режим. И если я забываю, то он так и остается в режиме Auto. При перезагрузки компьютера или выключения и включения, я этот процесс снова вижу в СПИСКЕ ПРОЦЕССОВ. Когда я не играю мне они не нужны.
Поэтому с помощью скриптов то я и могу определить в работе они или остановлены.
Для примера
Set colServices = objWMIService.ExecQuery_
("SELECT * FROM Win32_Service WHERE State='Stoped' and StartMode='Auto'")
For Each objService In colServices
  if objService.Name="PnkBstrB" then
     objService.ChangeStartMode("Manual") 'Ставим в ручной режим
     objService.StartService()  'Запускаем службу
  end if
Next

И т.д. и т.п.
Консольными коммандами это все не проделаешь.
А так...конечно тоже неплохо

Ладно.
Всем участникам ТЕМЫ большое спасибо и ПЛЮСЫ.
Тема может быть продолжена ЕСЛИ есть интересные решения.
С уважением ко ВСЕМ
LEND
В мире временном, сущность которого - тлен,
Не сдавайся вещам несущественным в плен. © О.Х.

Оффлайн LEO

  • Ветеран
  • *****
  • Сообщений: 4417
  • Карма: 310
  • Пол: Мужской
    • Просмотр профиля
Re: Работа с ПАНКБАСТЕРОМ (PunkBuster)
« Ответ #8 : 02.03.08, 13:34:38 »
net stop все равно прерасно работает. если служба запущена, то она ее остановит, если она не запущена - выдаст соответствующее сообщение, если же прав недостаточно, то и Ваш скрипт тоже ее не остановит.

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

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

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

Set colServices = objWMIService.ExecQuery_
("SELECT * FROM Win32_Service WHERE State='Stoped' and StartMode='Auto'")
For Each objService In colServices
  if objService.Name="PnkBstrB" then
     objService.ChangeStartMode("Manual") 'Ставим в ручной режим
     objService.StartService()  'Запускаем службу
     exit for ' комменты ниже
  end if
Next


не уверен, что в vbscript есть "exit for", если есть, то имеет смысл его поставить, дабы не перебирать остальные службы...

а можно просто в SELECT поставить WHERE Name='PnkBstrB'

а далее то же содержимое IF'a
с проверкой конечно, что SELECT вернул нужную запись.
« Последнее редактирование: 02.03.08, 13:44:19 от LEO »
http://is.gd/fpTeSMПродам книжки про Ajax и ASP.NET, http://is.gd/lDL64HПриглашаю в Dropbox

Оффлайн LEND

  • Пользователь
  • **
  • Сообщений: 95
  • Карма: 155
  • Истина как всегда где-то рядом
    • Просмотр профиля
Re: Работа с ПАНКБАСТЕРОМ (PunkBuster)
« Ответ #9 : 03.03.08, 12:53:11 »
Хорошо. Нет еще других решений. Тему считаю закрытой
В мире временном, сущность которого - тлен,
Не сдавайся вещам несущественным в плен. © О.Х.

Оффлайн Ra

  • ∴ Scharfschütze Θ
  • Ветеран
  • *****
  • Сообщений: 12206
  • Карма: 1680
  • Пол: Мужской
  • А вас я попрошу остаться.
    • Просмотр профиля
Re: Работа с ПАНКБАСТЕРОМ (PunkBuster)
« Ответ #10 : 04.03.08, 01:22:30 »
я вмешаюсь, позволите?  ;)
приоткрою завесу - кроме а и б там еще пылится punkbusterK  [[china]]

кстати, был такой старый добрый способ, не знаю актуален ли: создаете блокнотом пустые файлы pnkbstr, меняете им расширение на нужное и подменяете в system32 указанные файлы. и игра работает и пб не ругается.
  №1 for detaling maniacs