Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/89: Рейтинг темы: голосов - 89, средняя оценка - 4.85
0 / 0 / 0
Регистрация: 25.07.2016
Сообщений: 16
1

Проверить, запущена ли программа

22.08.2016, 12:39. Показов 17746. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Такая ситуация у меня свой сервер на нем стоит программа, и она по каким то причинам сама закрывается каждые 2 часа.

Как проверить запущенна ли программа? И когда она закроется запустить ее от имени админа!!!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.08.2016, 12:39
Ответы с готовыми решениями:

Проверка запущена ли другая программа
Нужно написать две проги:первая пустая,вторая сканит на наличие запущеной первой и если таковая...

Узнать на какой windows запущена программа
Как определить на какой windows запущено приложение. Если это windows 8 то программа выполняет одни...

Узнать от какого пользователя запущена программа
Здравствуйте. Подскажите пожалуйста, как определить от кого запущена программа, администратор или...

Узнать, запущена ли программа из под sandboxie
Как можно узнать, запущена ли программа из под песочницы? Что то ничего в голову не лезет

6
186 / 184 / 97
Регистрация: 30.04.2016
Сообщений: 478
22.08.2016, 13:10 2
Цитата Сообщение от Coder_TPAKTOP Посмотреть сообщение
Как проверить запущенна ли программа?
C#
1
2
string processName = "НазваниеПроцесса";
            var processExists = Process.GetProcesses().Any(p=>p.ProcessName == processName);
Цитата Сообщение от Coder_TPAKTOP Посмотреть сообщение
запустить ее от имени админа!!!
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
string processPath = "ПутьКПрограмме";
            var startInfo = new ProcessStartInfo(processPath)
            {
                Verb = "runas"
            };
 
            try
            {
                Process.Start(startInfo);
            }
            catch
            {
                // TODO
            }
1
0 / 0 / 0
Регистрация: 25.07.2016
Сообщений: 16
22.08.2016, 13:41  [ТС] 3
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
string processName = "НазваниеПроцесса";
            var processExists = Process.GetProcesses().Any(p=>p.ProcessName != processName)
            {
                 var startInfo = new ProcessStartInfo(processName)
                 {
                     Verb = "runas"
                 };
 
                 try
                 {
                     Process.Start(startInfo);
                 }
                 catch
                 {
                      // TODO
                 }
 
            };
Как я понял типа этого что то?
0
186 / 184 / 97
Регистрация: 30.04.2016
Сообщений: 478
22.08.2016, 13:48 4
Coder_TPAKTOP, ну не совсем, как минимум инструкцию if забыли и путь к запускаемой программе.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
string processName = "НазваниеПроцесса!!!!!!!!!!!!!!!!";
var processExists = Process.GetProcesses().Any(p=>p.ProcessName == processName);
if(!processExists)
{
      string processPath = "ПутьКЗапускаемойПрограмме!!!!!!!!!!!";
      var startInfo = new ProcessStartInfo(processPath)
      {
          Verb = "runas"
      };
 
      try
      {
          Process.Start(startInfo);
      }
      catch
      {
          // TODO
      }
}
0
0 / 0 / 0
Регистрация: 25.07.2016
Сообщений: 16
22.08.2016, 14:45  [ТС] 5
Сделал вроде бы все правильно. Но тут такое дело.... Он запускает программу бесконечно не важно открыта она или нет....
У меня сервак повис(((((

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
public partial class Form1 : Form
    {
        private string processName = "process.exe"; //Нужно ли расширение? "exe" или надо без него?
        private string processPath = @"C:\Users\Administrator\Desktop\win64\process.exe";
        private int LogStart = 0;
 
        public Form1()
        {
            InitializeComponent();
 
            timer1.Start();
        }
 
 
        private void timer1_Tick(object sender, EventArgs e)
        {
            label1.Text = LogStart.ToString(); //Сделал что бы видеть сколько раз перезапускалась программа.
 
            var processExists = Process.GetProcesses().Any(p => p.ProcessName == processName);
 
            if (!processExists)
            {
                var startInfo = new ProcessStartInfo(processPath)
                {
                    Verb = "runas"
                };
 
                try
                {
                    Process.Start(startInfo);
                }
                catch
                {
                    // TODO
                }
                Log = +1;
            }
        }
    }
0
186 / 184 / 97
Регистрация: 30.04.2016
Сообщений: 478
22.08.2016, 14:54 6
Coder_TPAKTOP,

Цитата Сообщение от Coder_TPAKTOP Посмотреть сообщение
Он запускает программу бесконечно не важно открыта она или нет....
Значит не находит процесс. Название процесса нужно писать без расширения.
Вообще, такие вещи нужно пробовать самому отлаживать. Ставите точку останова и в путь экспериментировать.

Второй момент.
Не советую использовать таймер для отслеживания процесса. У экземпляра класса Process есть событие Exited, которое срабатывает по завершению процесса. Т.е. алгоритм такой:
1) Поиск процесса по имени.
2) Если процесс не найден, то запускаем новый.
3) Подписываемся на событие Exited найденного/запущенного процесса
4) По срабатыванию обработчика события из п.3. запускаем новый процесс и переходим к п.3.

Получить процесс можно немного изменив Linq-запрос
C#
1
var process = Process.GetProcesses().FirstOrDefault(p => p.ProcessName == processName);
0
lvlkoo
22.08.2016, 16:59     Проверить, запущена ли программа
  #7

Не по теме:

Цитата Сообщение от Coder_TPAKTOP Посмотреть сообщение
сама закрывается каждые 2 часа.
Новую версию кряка скачайте :D

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.08.2016, 16:59

Определить, программа запущена на ноутбуке или десктопе
Здравствуйте, подскажите как можно проверить ноутбук или системный блок?

Как определить с какими параметрами запущена программа
Всем привет! Сабж. Каким методом можно определить с какими параметрами запущена программа, и...

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

Как узнать, сколько раз была запущена программа?
В программу встроена авторизация, авторизация одна для всех пользователей. Хочу сделать чтобы...

Запись файла в каталог, откуда программа была запущена
Добрый день! Подскажите как это сделать. Разрабатываю программу, есть в ней куча диалогов...

Узнать имя пользователя под которым была запущена программа
Имеется ввиду имя в домене.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru