Периодически закрывать программу - PullRequest
1 голос
/ 25 августа 2010

Я хочу убить исполняемый файл игры с именем KnightOnline и запретить пользователю запускать его. Я использую:

Process.Start("taskkill.exe", "/f /im kol.exe");

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

EDIT: В качестве решения я отредактировал хосты и заблокировал страницу входа в игру.

Ответы [ 4 ]

4 голосов
/ 25 августа 2010

Было бы лучше не разрешать пользователю запускать программу , во-первых?

В Windows 2000 и более поздних версиях (XP, Vista, "Seven") есть политики ограниченного использования программ.- позволяет установить белый или черный список программ.В случае белого списка будет разрешено запускать только перечисленные программы, тогда как с черным списком будут разрешены все, кроме перечисленных программ.Эта проверка происходит на уровне ОС и не может быть обойдена (кроме администраторов).См., Например, this .

(черный список довольно неэффективен, так как переименование исполняемого файла позволяет запустить его снова; белый список - это больше работы, чтобы получить исправление и управление - но большинству пользователей нужнобольшинство из 20 приложений, а также системные службы)

Примечание. Не все версии Windows позволяют администраторам устанавливать групповые политики. IIRC невозможно сделать в Windows XP Home или Vista Home Basic.

Кроме того, пользователи будут пользователями: если вы заблокируете локальные игры, они будут играть во флэш-браузерные игры;если вы заблокируете Flash, они будут играть в браузерные игры Javascript;если вы заблокируете это, они будут играть в текстовые приключенческие игры с чистым HTML (хотя по праву злитесь, что вы случайно заблокировали работу большинства других веб-сайтов).

Если вы заблокируете даже это, пользователи откажутся от компьютера.и пойти курить, или принести карты и сыграть в пасьянс IRL, или найти множество других способов избежать работы (если мы говорим о офисных пользователях) - так что это тоже не победа;если вы не пытаетесь отключить пользователей от компьютера (как это видно из ваших комментариев).

4 голосов
/ 25 августа 2010

Профессиональный способ - дать пользователю знать, что какая-то работающая программа может вызвать конфликты, и попросить пользователя закрыть его перед продолжением.

Убивать его молча, даже не говоря: «Мы приносим свои извинения» - зло.

2 голосов
/ 25 августа 2010

Попробуйте, если хотите запустить какой-то процесс в скрытом окне:

var processInfo = new ProcessStartInfo() 
                      { 
                         Arguments = "/f /im kol.exe", 
                         FileName = "taskkill.exe", 
                         WindowStyle = ProcessWindowStyle.Hidden 
                      };

Process.Start(processInfo );
2 голосов
/ 25 августа 2010

Вы можете использовать Process.Kill , чтобы убить другой процесс:

foreach (var process in Process.GetProcessesByName("kol"))
{
    process.Kill();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...