Як закрити програму на віддаленому комп’ютері
Як закрити програму на віддаленому комп'ютері?
Відомий заголовок і ім'я ехе, з урахуванням того, що там він98?
Якщо цей exe НЕ служба, по-моєму то ніяк
В крайньому випадку тобі доведеться писати свою програму яка б працювала на зразок Remote Administrator
Серцем чую :), що WMI мені допоможе, тільки ось SDK для w2k і вище не знайду.
> novice # XA0; (17.05.06 12:21) [2]
> Серцем чую :), що WMI мені допоможе, тільки ось SDK для
> W2k і вище не знайду.
А у Microsoft сайти не працюють?
а навіщо вам заголовок exe файлу ?!
Вони, звичайно, працюють, ось тільки SDK там для NT4.
> А навіщо вам заголовок exe файлу ?!
Мені особисто - ні до чого. Я лише кажу про те, що він мені відомий - це на випадок пошуку по заголовкам вікон.
> Мені особисто - ні до чого. Я лише кажу про те, що він мені відомий
> - це на випадок пошуку по заголовкам вікон
зрозуміло. ми про різні речі говоримо)
заголовок вікна / додатки і заголовок exe.
написати щось типу невеликого сервера, слухача певний порт. з функціями # XA0; отримання списку запущених додатків і завершення процесу за назвою.
> Мені особисто - ні до чого. Я лише кажу про те, що він мені відомий
> - це на випадок пошуку по заголовкам вікон
зрозуміло. ми про різні речі говоримо)
заголовок вікна / додатки і заголовок exe.
написати щось типу невеликого сервера, слухача певний порт. з функціями # XA0; отримання списку запущених додатків і завершення процесу за назвою.
> Написати щось типу невеликого сервера, слухача певний
> Порт. з функціями # XA0; отримання списку запущених додатків
> І завершення процесу за назвою.
Але в цьому випадку і клієнта розміщувати на тій машинці доведеться, що мене не зовсім радує. Нагадаю - він98, тобто не дати користувачеві відрубати клієнта я не зможу, а необхідно, щоб незалежно від бажань / можливостей користувача я міг у нього завершити додаток, причому з іншої машини.
> Нагадаю - він98, тобто не дати користувачеві відрубати клієнта
> Я не зможу, а необхідно, щоб незалежно від бажань / можливостей
> Користувача я міг у нього завершити додаток, причому з
> Іншої машини.
А додаток на клієнті тобою написано?
Вобщем-то, саме як клієнтська частина - ні. Я намалював програму, яка з деяким інтервалом запитує список запущених процесів і, якщо знаходить в них процес, що належить одному з заздалегідь прописаних ексешніков, вбиває його. На NT "ях все здорово, тому що користувачі мій процес вивантажити не можуть, а ось в 98-х особливо просунуті просто вбивають його - і все.
function CreateNoKillProcess;
const
ACL_REVISION = 2;
begin
# XA0; result: = false;
if not InitializeAcl (ACL, SizeOf (_ACL), ACL_REVISION)
# XA0; then; // ShowMessage ( "InitializeAcl" + # 13 # 10 + SysErrorMessage (GetLastError));
if not IsValidAcl (ACL) then exit;
if not InitializeSecurityDescriptor (@ SD, SECURITY_DESCRIPTOR_REVISION)
# XA0; then; // ShowMessage ( "InitializeSecurityDescriptor" + # 13 # 10 + SysErrorMessage (GetLastError));
if not SetSecurityDescriptorDacl (@ SD, true, @ ACl, true)
# XA0; then; // ShowMessage ( "SetSecurityDescriptorDacl" + # 13 # 10 + SysErrorMessage (GetLastError));
if not IsValidSecurityDescriptor (@SD) then exit;
ZeroMemory (@ sa, SizeOf (sa));
sa.nLength: = SizeOf (sa);
sa.bInheritHandle: = false;
// Nnueea ia iao aane? Eioi? aaciianiinoe
sa.lpSecurityDescriptor: = @ SD;
// Io e iaeiiao, nicaaai iiaue i? Ioann n iiauie ao? Eaooaie aaciianiinoe
ZeroMemory (@ si, SizeOf (si));
si.cb: = SizeOf (si);
if not CreateProcess (nil, EXEProg, @ sa, @ sa, false, 0, nil, nil, si, pinfo)
# XA0; then; // ShowMessage ( "CreateProcess" + # 13 # 10 + SysErrorMessage (GetLastError));
result: = true
Далі CreateNoKillProcess ( "notepad.exe"); - і якщо користувач не адмін він його не закриє ніяк
> Далі CreateNoKillProcess ( "notepad.exe"); - і якщо юзер
»Не адмін він його не закриє ніяк
Повторюся, але у мене проблема з Він98, де розділяються прав немає. Це перше. Друге, навіть в цьому випадку мою програму треба # XA0; запускати на віддаленому комп'ютері, я це роблю шедулера при вході в вінду (в автозапуску чомусь не виходить, але справа не в цьому), а значить "особливо просунутий" може просто відключити завдання шедулера або викинути з автозавантаження - свобода в Він98 нічим не обмежена.
Значить тобі треба навчитися приховувати свою прогу хоча б в диспетчері Завдань наприклад сплайсингом функцій API.
В інеті є багато статей на цю тему
Думав над цим - але завдання шедулера нікуди не сховати. Вобщем, якщо застосувати WMI не вийде, то доведеться приховувати програму в диспетчері, хоча це все-таки не зовсім те і при наявності соображалкі у користувача він цей захист обійде. Основна проблема на тек. момент - не знаходжу SDK для вінтукея і вище.
Пам'ять: 0.75 MB
Час: 0.06 c