170 похожих чатов

Привет, я уже приходил сюда пару раз с проблемой которую

до конца так и не решил.

В чем суть: .NET 7.0, необходимо сделать Worker Service чтобы нужный мне функционал крутился ПОСТОЯННО в бэкграунде и через пайпы общался с UI в двухстороннем порядке.

Но также очень важный момент чтобы он АВТОМАТИЧЕСКИ запускался после того как система включается. Т.е после перезагрузок системы и тд

Мое решение:
Я создал обычный BackgroundWorker как учат гайды, могу также вызывать его с UI когда надо, вот как выглядит код:

public class MyBackgroundService : BackgroundService{
private NamedPipeServerStream _pipeServer;
protected override async Task ExecuteAsync(CancellationToken stoppingToken) {
_pipeServer = new NamedPipeServerStream("MyPipe", PipeDirection.Out); await _pipeServer.WaitForConnectionAsync(stoppingToken);
var writer = new StreamWriter(_pipeServer);
await writer.WriteLineAsync("Message from Service"); await writer.FlushAsync();
}
public override async Task StopAsync(CancellationToken cancellationToken) {
await _pipeServer.DisposeAsync(); await base.StopAsync(cancellationToken);
}
private async Task DeviceUpdate() {
}}

Вызов с UI после логина пользователя:

Host.CreateDefaultBuilder(args)
.ConfigureServices((hostContext, services) => { services.AddHostedService<MyBackgroundService>(); })

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

Чатгпт мне советовал два варианта:
1. Через установщик во время первичной установки
2. В рантайме при запуске приложения или определенных его состояний

Я попытался во второй вариант с добавлением задачи в Windows Task Scheduler, но даже с админ правами мне виндовс не разрешает это делать.

Первый вариант тоже не совсем понятен. Я пытался инсталлятор делать через MSIX Packaging Tool сразу из окна Visual Studio, но там нет опций с конфигурацией приложения перед установкой. Щас смотреть пытаюсь в сторону WiX Toolset и Microsoft Installer Extension: https://learn.microsoft.com/en-us/dotnet/core/extensions/windows-service-with-installer?tabs=wix
Но все равно не особо понятно каким образом я могу сделать так чтобы бэкграунд сервис всегда крутился независимо от UI ? Помогите пожалуйста в какую сторону мне копать, спасибо

P.S: это не малварь, а попросту MDM приложение для контроля корпоративных устройств чтобы юзеры не делали лишних действий которые могут навредить

5 ответов

32 просмотра

Что то такое попробовать запускал

hangfire / quatrz

Makima
hangfire / quatrz

ему надо чтобы у него сервис автоматом запускался а не шедулер

Denisio 🇬🇪
ему надо чтобы у него сервис автоматом запускался ...

веб апп с хенгфайром или кварцом + сервер настроенный на автостарт

Тебе надо создать приложение виндовс сервис и зарегать его в системе

Похожие вопросы

Обсуждают сегодня

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Ребят в СИ можно реализовать ООП?
Николай
33
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Карта сайта