Я пишу программу для немедленного отслеживания и уничтожения, когда пользователь запускает командную строку (и regedit, если это возможно).Это сделано для того, чтобы запретить пользователям запускать команды, которые я бы предпочел, чтобы их не было.
Я уже написал код, который видит, когда процесс запускается, и проверяет его имя, используя QueryFullProcessImageName.Проблема в том, что если бы кто-то переименовал командную строку, я бы больше не смог обнаружить ее по имени процесса.В настоящий момент я обнаруживаю командную строку как «\ cmd.exe», но, очевидно, это не очень безопасно.
Ниже приведено то, что я имею для кода.Я удалил все проверки ошибок для краткости.Пожалуйста, дайте мне знать, если вам нужно больше ясности.Спасибо!
TCHAR exeName[MAX_PATH];
DWORD exeNameSize = MAX_PATH;
//the pid comes into the function as a parameter
HANDLE handle = OpenProcess(PROCESS_QUERY_LIMITED_INFORMATION, 0, pid);
if (handle)
{
if (QueryFullProcessImageName(handle, 0, exeName, &exeNameSize))
{
tstring name = exeName;
/*
badProcs would contain the path identifiers such as
"\\cmd.exe" or "\\regedit.exe". This detection is
what I want to make better.
*/
for(int i=0; i < badProcs.size(); i++)
{
if(tstring::npos != name.find(badProcs.at(i)))
{
if(TerminateProcess(handle,0))
OutputDebugString(_T("Process should be dead\n\n"));
}
}
}
CloseHandle(handle);
}
Некоторая дополнительная информация: причина, по которой я пишу это, заключается в управлении тем, что происходит на других компьютерах.Я хочу сделать так, чтобы, когда пользователь запускает другой рабочий стол (с помощью любой проприетарной программы), я мог контролировать, имеют ли они доступ к элементам, которые представляют самые большие дыры в безопасности системы.Учитывая, что я хочу контролировать только действия, выполняемые на другом рабочем столе, я не хочу менять настройки, опасаясь повреждения данных за пределами целевого рабочего стола.Разве не стоит беспокоиться о коррупции?
Меня интересует только управление собственным настольным компьютером, а не копирование того, что пользователи делают в своем собственном пространстве.По сути, отдельный рабочий стол предназначен для корпоративной работы, и я хочу иметь возможность ограничивать то, что люди могут делать с информацией о компании и т. Д.