Загрузка Win2000 в режиме командной строки, но...

Подключаем наши девайсы к компьютеру. Обсуждаются: порты, протоколы, драйвера, языки программирования и т.д.
Ответить
Друг Кота
Аватара пользователя
Сообщения: 4468
Зарегистрирован: Вс янв 24, 2010 19:19:52
Откуда: Главный Улей России (Moscow)

Сообщение DX168B »

Приветствую котов.

Есть такой вопрос: Как заставить Win2000 постоянно загружаться
в режиме командной строки? Но чтобы это был не безопасный режим.

То есть надо, чтобы грузились все драйвера, службы и элементы автозагрузки.
Как бы вместо winlogon'a чтобы грузилась cmd.exe в качестве интерфейса\оболочки.
Мне надо загрузить Win2000 на стареньком компе(это чтобы он был необслуживаемым), и в автозагрузку поместить своё консольное приложение(Win32), которое будет работать совместно с несколькими службами.

Какие файлы надо править и что прописывать?
I am DX168B and this is my favourite forum on internet!
Контактная информация:
Реклама
Друг Кота
Аватара пользователя
Сообщения: 3088
Зарегистрирован: Пт мар 09, 2007 15:01:52
Откуда: Биробиджан

Сообщение radteh »

К сожалению у Windows GUI вшитый в ядро и избавится от него невозможно. а сколько старенький ваш компьютер?
Реклама
lix
Опытный кот
Сообщения: 703
Зарегистрирован: Вс янв 17, 2010 15:32:19
Откуда: Курган

Сообщение lix »

ставь вместо explorer.exe cmd.exe. ( не помню где оно там в рестре). я бы так сделал.
Мучитель микросхем
Аватара пользователя
Сообщения: 458
Зарегистрирован: Пн дек 13, 2010 13:01:59
Откуда: Украина

Сообщение DJ_Kiridza »

HKEY_LOCAL_MACHINE\Software\Microsoft\WindowsNT\CurentVersion\Winlogon
двойной клик по Shell и вместо Explorer.exe пишем допустим c:\tc\totalcmd.exe (при условии что в корне диска с:\ у нас есть папочка tc в которой лежит тотал коммандер, ну или c:\progra~1\far\far.exe или тот-же cmd.exe - у кого какие вкусы ))
З.Ы.
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurentVersion\Run
правой кнопкой - создать - строковой параметр, пишем ему любое имя "моя прога" например, двойным кликом и в окне впиысваем путь к своей экзехе , н: "d:\MyProject\MyProgram.exe" - это чтобы прога стартовала для_всех_юзеров, если нужно только для одного конкретного юзера под которым выполняецо вход - то открываем реестр под нужным пользователем и в реестре
HKEY_CURENT_USER\Software\Microsoft\Windows\CurentVersion\Run

Но если делать совсем красиво -то свою прогу нужн оинсталить как системный процесс - и проинсталить через -k install но тут двумя словами не обойтись, лучше почитать соотв. инфу чтоб потом небыло хуже ))
мысли мысли штош вы вйотесь
над мойейу головойу
вы там мосга нинайдете
нед там мосга! йа тупойе (БОР)
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
lix
Опытный кот
Сообщения: 703
Зарегистрирован: Вс янв 17, 2010 15:32:19
Откуда: Курган

Сообщение lix »

только надо от всяких умников защитится. в cmd прогу твою прибьют по ctrl-с и explorer.exe могут запустить...
Реклама
Друг Кота
Аватара пользователя
Сообщения: 4468
Зарегистрирован: Вс янв 24, 2010 19:19:52
Откуда: Главный Улей России (Moscow)

Сообщение DX168B »

Спасибо всем. На с чёт винлогона - это я так, к примеру. Значит можно подменить explorer.exe на командную строку. На счёт защиты от умников - там ни клавы, ни монитора не будет и располагаться системник будет в недоступном для посторонних месте.
На счёт автозагрузки - это вроде знаю, где прописывается.

Ещё вопрос: А можно вместо шелла использовать сразу свою консольную программу? В файлах компа все равно не будет нужды копаться.
I am DX168B and this is my favourite forum on internet!
Контактная информация:
Реклама
Друг Кота
Аватара пользователя
Сообщения: 4468
Зарегистрирован: Вс янв 24, 2010 19:19:52
Откуда: Главный Улей России (Moscow)

Сообщение DX168B »

Загрузил я свою консольку вместо Explorer.exe
Работает почти на ура. В виду слабости компа, моя программа куда-то спешит, иногда не успевая принять все байты из COM порта. Но это мои баги. Программу перепишу(точнее её DLL обращения к порту). И ещё надо будет внести задержку при старте программы(предусмотрю в самой проге), так как одна из служб(MySQL Server) загружается позже программы и выскакивает ошибка подключения к БД.
Всем спасибо. :beer:
I am DX168B and this is my favourite forum on internet!
Контактная информация:
Мучитель микросхем
Аватара пользователя
Сообщения: 458
Зарегистрирован: Пн дек 13, 2010 13:01:59
Откуда: Украина

Сообщение DJ_Kiridza »

Небольшой совет (сам так собираюсь сделать - пишу/паяю свой умный дом):
Напсиать программульку в стиле клиент-сервер.
Сама сервераня часть комсольная, открывает сокет.
Клиентская часть коннектится к этому сокету и далее управление серверной частью идет по средством посылки клиентом в сокет соотв. кода.
Серверную часть прорегистрировать в системе как системный процесс: для этого из коммандной строки запускаем свою программу с параметром -k install, после этого программа регистрируется в системе как служба, и после перезагружки будет запущена даже БЕЗ (!) входа в виндовс.
Преимущества - клиентскую "управляющую" программку можно запускать не только на этом-же компьютере а на любом другом в локальной сети, поключенной к этому "серверу" - например на своём рабочем - и удаленно рулить "сервером" закрытым в кладовке ))

При установке -k install программа визуальн оне как не отображается как запущеная, её можно увидеть только в списке процесов, также она становится доступна в списке служб (правой кнопкой мой компьютер - управление - службы и приложения - службы), ... удалить её -k uninstall.
мысли мысли штош вы вйотесь
над мойейу головойу
вы там мосга нинайдете
нед там мосга! йа тупойе (БОР)
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 6339
Зарегистрирован: Вт апр 24, 2007 07:45:40
Откуда: Minsk

Сообщение Jack_A »

DJ_Kiridza писал(а): Сама сервераня часть комсольная
Забавная опечатка - то ли консольная, то ли комсомольная :-)
Мучитель микросхем
Аватара пользователя
Сообщения: 458
Зарегистрирован: Пн дек 13, 2010 13:01:59
Откуда: Украина

Сообщение DJ_Kiridza »

:))
мысли мысли штош вы вйотесь
над мойейу головойу
вы там мосга нинайдете
нед там мосга! йа тупойе (БОР)
Контактная информация:
Первый раз сказал Мяу!
Сообщения: 34
Зарегистрирован: Чт янв 06, 2011 03:46:29

Сообщение Newdjeen »

открываем блокнотом файл C:/boot.ini
видем такой картин (это для ХРени, но XPень от 2K ничем не отличается):
[boot loader]
timeout=5
default=multi(0)disk(0)rdisk(0)partition(1)WINNT
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)WINNT="Windows XP Professional"/noexecute=optout /fastdetect /3GB
жирным шрифтом выделены ключи загрузки ОСи
к примеру если туда добавить ключ /SAFEBOOT, то Wind'а всегда будет загружаться в безопасном режиме

существует ключ /nogui но вот только я не помню куда он прописывается...
или же в boot.ini - /nogui
или же в реестре в winlogon/explorer.exe -nogui
или же в Run ветке реестра...

данный ключ ПОЛНОСТЬЮ отключает ГИП ОСи, но если в автозагрузку поставить ярлык к cmd, настроив его в полноэкранный режим, при этом при помощи локальных политик безопасности отключить Ctrl+Alt+Del и запретить Alt+F4, то кроме как в командной строке нигде не поработаешь... НО!!! люди знающие DOS команды без труда смогут запустить explorer (c:/windows/system 32/explorer.exe) или к-л программу, например winrar, набрав в командной строке c:/windows/program files/winrar/winrar.exe (а у рара родной проводник видит все скрытые, даж системные файлы)

советую ознакомиться с опциями загрузки ядра, а если нужна голая консоль, то обратить внимание на Windows Embeddet
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 3088
Зарегистрирован: Пт мар 09, 2007 15:01:52
Откуда: Биробиджан

Сообщение radteh »

Вы можете запустить командный интерпретатор на весь экран, но GUI всё равно будет кушать ресурсы, так как не отделимо от ядра. По поводу загрузки вашей программы раньше СУБД, введите проверку: перед попыткой подключения к БД проверить запущена MySQL или нет, если не запущена - подождать, если время ожидания вышло - попытаться запустить MySQL, не вышло - вывести ошибку.
Друг Кота
Аватара пользователя
Сообщения: 4468
Зарегистрирован: Вс янв 24, 2010 19:19:52
Откуда: Главный Улей России (Moscow)

Сообщение DX168B »

Я так и сделал. :)
Сначала пытаюсь 6 раз сконнектиться к ней через таймауты.
Потом отрабатываю:

Код: Выделить всё

    system("net start MySQL");
После этого снова таймаут и 4 попытки сконнектиться.
Если функция mysql_real_connect(*************); продолжает возвращать ошибки,
то программа шлёт по отдельному сетевому сокету другому компу в сети ошибку работы сервера
и отрабатывает:

Код: Выделить всё

int start(void)
{
    STARTUPINFOA si;
    PROCESS_INFORMATION pi;

    ZeroMemory( &si, sizeof( si ) );
    si.cb = sizeof( si );
    ZeroMemory( &pi, sizeof( pi ) );

    if(!CreateProcessA( NULL,
                        "\"C:\\WINNT\\explorer.exe\"",
                        NULL,
                        NULL,
                        FALSE,
                        0,
                        NULL,
                        NULL,
                        &si,
                        &pi ))
    {
          prinf("Error to start explorer.exe");
          return 1;
    }
	 printf("Starting EXPLORER. Please wait.....");

    WaitForSingleObject( pi.hProcess, 5000);

    CloseHandle( pi.hProcess );
    CloseHandle( pi.hThread );
    return 0;
}
И запускается explorer.exe (рабочий стол)
После этого монитор, USB мышь и клаву за пазуху и бегом искать причину сбоя. :)))
Я даже коды ошибок предусмотрел.
I am DX168B and this is my favourite forum on internet!
Контактная информация:
Ответить

Вернуться в «Интеграция с ПК»