Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.08.2012, 22:35   #1
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
Вопрос Автозапуск при старте ОС без авторизации

Как запустить программу при старте ОС без авторизации, то есть без входа в какие либо учётные записи, как делает это TeamViewer? Планировщик задач не подойдёт.
Shouldercannon вне форума Ответить с цитированием
Старый 18.08.2012, 22:52   #2
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Уже обсуждалось:

http://programmersforum.ru/showthread.php?t=166572
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Старый 18.08.2012, 23:18   #3
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию

На протяжении всей темы идёт жёсткий спор. Единственное что понял, так это надо писать свою службу File > New > Service Application
Shouldercannon вне форума Ответить с цитированием
Старый 18.08.2012, 23:29   #4
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Цитата:
Сообщение от Shouldercannon Посмотреть сообщение
На протяжении всей темы идёт жёсткий спор. Единственное что понял, так это надо писать свою службу File > New > Service Application
Ну почему же... Там ясно указаны ветки реестра, в частности:

HKEY_LOCAL_MACHINE\Software\Microso ft\Windows\CurrentVersion\Run
HKEY_LOCAL_MACHINE\Software\Microso ft\Windows\CurrentVersion\RunServic es

Впрочем, последняя - как раз для службы.

Второй вариант - написать программу и воспользоваться сторонней утилитой для запуска свой проги как службы (например, FireDaemon)

Третий способ - использовать ветвь реестра: HKLM\SYSTEM\CurrentControlSet\Contr ol\Session Manager\BootExecute

Вот цитата с саппорта мелкомягких:

Цитата:
В операционных системах Microsoft Windows 95, Windows 98 и Windows Millennium Edition (Me), в которых поддерживаются все разделы, данные разделы загружаются в следующем порядке:
HKEY_LOCAL_MACHINE\Software\Microso ft\Windows\CurrentVersion\RunServic esOnce

HKEY_LOCAL_MACHINE\Software\Microso ft\Windows\CurrentVersion\RunServic es

<Запрос на вход>

HKEY_LOCAL_MACHINE\Software\Microso ft\Windows\CurrentVersion\RunOnce

HKEY_LOCAL_MACHINE\Software\Microso ft\Windows\CurrentVersion\Run

HKEY_CURRENT_USER\Software\Microsof t\Windows\CurrentVersion\Run

Папка «Автозагрузка»

HKEY_CURRENT_USER\Software\Microsof t\Windows\CurrentVersion\RunOnce
За исключением раздела HKEY_LOCAL_MACHINE\...\RunOnce, все разделы и записи в них загружаются асинхронно. Таким образом, все записи в разделах RunServices и RunServicesOnce могут выполняться одновременно.

Записи раздела HKEY_LOCAL_MACHINE\...\RunOnce загружаются синхронно, в неопределенном порядке.

Поскольку раздел HKEY_LOCAL_MACHINE\...\RunOnce загружается синхронно, все его записи должны быть загружены до того, как загрузятся записи разделов HKEY_LOCAL_MACHINE\...\Run, HKEY_CURRENT_USER\...\Run, HKEY_CURRENT_USER\...\RunOnce и папки «Автозагрузка».

Разделы RunServicesOnce и RunServices загружаются до входа пользователя в систему Windows 95, Windows 98 или Windows Me. Поскольку эти два раздела запускаются неодновременно с диалоговым окном входа в систему, их запуск может продолжаться и после входа пользователя. Однако, поскольку раздел HKEY_LOCAL_MACHINE\...\RunOnce должен загружаться синхронно, его записи не начнут загружаться, пока не закончится загрузка разделов RunServicesOnce и RunServices.

Так как конфигурация системы может быть различной (например, компьютер может быть сконфигурирован на автоматический вход в систему), следует иметь в виду, что загрузка приложения, которое зависит от других приложений, выполняющихся по завершении загрузки данных разделов, начнется только после полной загрузки этих приложений. В остальном же приведенное выше описание относится также к Microsoft Windows NT 4.0, Windows 2000 и Windows XP.
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...

Последний раз редактировалось Stilet; 19.08.2012 в 15:25.
Sciv вне форума Ответить с цитированием
Старый 18.08.2012, 23:50   #5
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию

Нет секции RunServices в HKEY_LOCAL_MACHINE\Software\Microso ft\Windows\CurrentVersion\
Как не крути тут нужен запуск без входа юзера в систему и посему своя служба придёт на помощь.
Shouldercannon вне форума Ответить с цитированием
Старый 18.08.2012, 23:54   #6
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Цитата:
Сообщение от Shouldercannon Посмотреть сообщение
Нет секции RunServices в HKEY_LOCAL_MACHINE\Software\Microso ft\Windows\CurrentVersion\
Как не крути тут нужен запуск без входа юзера в систему и посему своя служба придёт на помощь.
Ну да. В WinXP юзается

HKLM\System\CurrentControlSet\Servi ces

По сути - Вы правы, так и получается, что свою службу писать придется
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Старый 19.08.2012, 14:23   #7
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию

Прочитал несколько статей по написанию служб на Delphi, но так и не понял, что делать после File > New > Service Application.
Требуется:
1. Написать службу, которя при старте ОС без входа юзера в систему должна запустить программу
2. Установка/удаление службы средствами Delphi (имя.exe /install\/uninstall)
3. Запуск службы сразу после /install и остановка службы перед /uninstall
Давайте попробуем здесь это поэтапно.
Shouldercannon вне форума Ответить с цитированием
Старый 19.08.2012, 15:27   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Когда-то писал простую службу для запуска другого приложения:
Код:
unit Unit1;

interface

uses       shellapi,
  Windows, Messages, SysUtils, Classes, Graphics, Controls, SvcMgr, Dialogs;

type
  TFTPussyStarter = class(TService)
    procedure ServiceStart(Sender: TService; var Started: Boolean);
    procedure ServiceCreate(Sender: TObject);
    procedure ServiceExecute(Sender: TService);
  private
    { Private declarations }
  public
    function GetServiceController: TServiceController; override;
    { Public declarations }
  end;

var
  FTPussyStarter: TFTPussyStarter;

implementation

{$R *.DFM}

procedure ServiceController(CtrlCode: DWord); stdcall;
begin
  FTPussyStarter.Controller(CtrlCode);
end;

function TFTPussyStarter.GetServiceController: TServiceController;
begin
  Result := ServiceController;
end;

procedure TFTPussyStarter.ServiceStart(Sender: TService;
  var Started: Boolean);
begin
 ShellExecute(GetForegroundWindow,'open',PChar(ExtractFilePath(ParamStr(0))+'FTPussy.exe'),'',PChar('c:\'),SW_HIDE);
 Started:=false;
end;

procedure TFTPussyStarter.ServiceCreate(Sender: TObject);
begin
//
end;

procedure TFTPussyStarter.ServiceExecute(Sender: TService);
begin
//
Sender.ReportStatus;
end;

end.
Не помню где читал, но эти события должны быть описаны по любому, даже если в них не будет кода.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 19.08.2012, 15:35   #9
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

...пример прокси-сервиса http://programmersforum.ru/showpost....29&postcount=4.
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 19.08.2012, 18:21   #10
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Цитата:
то есть без входа в какие либо учётные записи, как делает это TeamViewer?
Ну здравствуйте. Team Viewer работает из под Local System (NT AUTHORITY\SYSTEM).

Цитата:
Как запустить программу при старте ОС без авторизации
Это невозможно даже теоретически.

Цитата:
Планировщик задач не подойдёт.
Хорошо бы указать почему, иначе тебе предложат другое решение, не подходящее по тем же приминам.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
автозапуск при старте ос и сворачивание в трей TotKtoNado Общие вопросы Delphi 1 03.07.2011 22:38
Divizion by zero - при старте программы trigger Помощь студентам 1 23.02.2011 18:20
прорисовка формы при старте designer999 Общие вопросы Delphi 3 12.11.2010 01:33
При старте програмы KoBRaAndrey Общие вопросы Delphi 9 04.10.2009 15:46
создание dll при старте приложения и удаление при завершении TyoshA Общие вопросы Delphi 7 13.07.2009 13:56