burask
-
Постов
3 -
Зарегистрирован
-
Посещение
Тип контента
Профили
Форумы
Блоги
Галерея
События
Сообщения, опубликованные burask
-
-
1. Ничего сносить не надо.
2. Разблокировать ПК методами http://boltunishka.berserki.ru/archives/459
3. Лечить антивирусом. Лучше снять винт и проверить на другом ПК. Если другого ПК нет, то в безопасном режиме.
4. Не работайте с привилегиями администратора, тогда вероятность поймать всякую дрянь значительно снижается. Установленный антивир не панацея.
Если сделать сначала п.3 , а потом п.2 головняк обеспечен.
-
стараюсь писать самодокументированный код с комментариями и шириной в 80 символов.
что-то типо:
/**
* Модуль для работы с системными службами
* License: GPLv2
* Authors: Дамбаев Алесандр, [email protected]
* Copyrights: Дамбаев Александр, [email protected]
* Date: Jul 26, 2009
* Version: 1.0
* Example:
* ---
* import prt_ctrl. scm;
* Scm scm = new Scm;
* Service svc = scm. open_service( "Prt_Service");
* try
* {
* svc. stop( );
* }catch( Exception e)
* {
* //kills svc
* }
* ---
*/
module prt_ctrl. scm;
import win32. windows;
import win32. winsvc;
import std.stdio;
import std.path;
import std.c.string;
// права доступа к службе
const SERVICE_RIGHTS = SERVICE_START | SERVICE_STOP | SERVICE_QUERY_STATUS |
SERVICE_QUERY_CONFIG;
// права доступа к менеджеру служб
const SC_RIGHTS = SC_MANAGER_ALL_ACCESS;
/**
* класс, описывающий системную службу
*/
class Service
{
public:
/**
* конструктор класса
* Params:
* scm = дескриптор менеджера служб
* name = внутреннее имя системной службы
* dw_access = права доступа к системной службе
* Throws:
* "unable to open service" если не удалось получить
* требуемый доступ к службе.
*/
this( SC_HANDLE scm,
char[] name,
DWORD dw_access = SERVICE_RIGHTS)
{
h_service = OpenService( scm, (name~'\0'). ptr, dw_access);
if( !h_service)
throw new Exception( "unable to open service");
}
~this( )
{
if( h_service)
CloseServiceHandle( h_service);
}
/**
* запуск системной службы
* Throws:
* "unable to start service" если запуск не удался;
*/
void
start( )
{
if( !StartService( h_service, 0, null))
throw new Exception( "unable to start service");
}
/**
* останавливает службы
* Throws:
* "unable to stop service", если не удалось дать команду
* для остановки, либо служба не остановилась
* "unable to query service status", если не удалось
* узнать статус службы
* "service stopping is timouted", если служба не смогла
* остановиться за 60 сек.
* "unable to query service config", если не удалось
* узнать конфигурацию службы
*/
void
stop( )
{
SERVICE_STATUS ss;
if( !ControlService( h_service, SERVICE_CONTROL_STOP, &ss))
{
throw new Exception( "unable to stop service");
}
if( !QueryServiceStatus( h_service, &ss))
throw new Exception( "unable to query service "
"status");
uint wait;
while( ss. dwCurrentState != SERVICE_STOP_PENDING &&
wait < 6000)
{
Sleep( 10);
++wait;
if( !QueryServiceStatus( h_service, &ss))
throw new Exception( "unable to query "
"service status");
}
if( ss. dwCurrentState != SERVICE_STOP_PENDING)
throw new Exception( "service stopping is time"
"outed");
wait = 0;
while( ss. dwCurrentState != SERVICE_STOPPED &&
wait < 6000)
{
Sleep( 10);
++wait;
if( !QueryServiceStatus( h_service, &ss))
throw new Exception( "unable to query "
"service status");
}
if( !QueryServiceStatus( h_service, &ss))
throw new Exception( "unable to query service "
"status");
if( ss. dwCurrentState != SERVICE_STOPPED)
throw new Exception( "unable to stop service");
}
/**
* Возвращает имя бинарного файла системной службы
* Returns:
* имя бинарного файла системной службы
* Throws:
* "need to open service first", если доступ к службе
* не получен
* "unable to query service's config", если невозможно
* получить конфигурацию службы
*/
char[]
image( )
{
QUERY_SERVICE_CONFIG * service_conf;
DWORD dw_needed;
char[] buf = new char[ 256];
service_conf = cast(QUERY_SERVICE_CONFIG*)buf.ptr;
if( !h_service)
throw new Exception( "need to open service "
"first");
if( !QueryServiceConfig( h_service, service_conf, 256,
&dw_needed))
throw new Exception( "unable to query service's"
" config ");
return getBaseName( service_conf. lpBinaryPathName[ 0..
strlen(service_conf. lpBinaryPathName)]);
}
private:
/// дескриптор службы
SC_HANDLE h_service;
/// имя службы
//char[] s_name;
}
/**
* класс, описывающий работу с менеджером служб
*/
class Scm
{
public:
/**
* Конструктор класса
* Params:
* s_mach = имя компьютера
* dw_access = права доступа к менеджеру служб
* Throws:
* "unable to open sc", если невозможно получить доступ с
* затребованными правами
*/
this( char[] s_mach = null, DWORD dw_access = SC_RIGHTS)
{
s_machine = s_mach;
if( s_mach != null)
h_sc = OpenSCManager( (s_machine~'\0'). ptr,
null, dw_access);
else
h_sc = OpenSCManager( null, null, dw_access);
if( h_sc == null)
throw new Exception( "unable to open sc");
}
~this( )
{
if( h_sc)
CloseServiceHandle( h_sc);
}
/**
* Создает класс службы и открывает ее
* Params:
* name = внутреннее имя службы
* dw_access = access flags
* Returns:
* указатель на экземпляр класса Service
*/
Service
open_service( char[] name, DWORD dw_access =
SERVICE_RIGHTS)
{
return new Service( h_sc, name, dw_access);
}
private:
/// имя компьютера
char[] s_machine;
/// дескриптор менеджера служб
SC_HANDLE h_sc = null;
}вот вопрос - комментарии на каком языке предпочитаете писать? Раньше все комментарии оставлял на английском, с замахом на глобальность творения (:, но после того, как начал работать "программистом", заметил, что довольно много людей не знают английского... кто-нить читал каменты к коду на транслите? (: приходилось ... гг
А вобще - стиль склонен меняться с опытом
Что за язык программирования ?
"Вас обманывают!". Студент из США бросил учебу и объяснил причины в публикации на Facebook
в Новости
Опубликовано · Изменено пользователем burask
Невежда так же в ослепленье
Бранит науки и ученье,
И все ученые труды,
Не чувствуя, что он вкушает их плоды.
И.А. Крылов
от себя добавлю:
Меня расстраивает современная тенденция, с подачи некоторых журналистов, в попытках уязвить отличников в их, якобы, ущербности. Это что-то вроде самоутверждения за чужой счет. Успешность человека не зависит от его успеваемости в школе, а зависит от его способности и умения планировать и следовать намеченному плану.
А по школьному образованию - на данный момент, насколько знаю, нет способов опредения способностей человека на его раннем этапе развития (не берем в счет гениев), поэтому школа дает универсальное образование, а человеку уже самому решать - надо это ему или нет. Проблема в том, что некоторые индивидуумы решив, что какой-то предмет(ы) ему не нужен(ы), начинают всячески препятствовать в его изучении другим ученикам. Не хочешь учиться - не учись, но не мешай другим.