Я делаю предположение, что B начинает поиск A из списка процессов ...
Сценарий 1. Проверка программы для другой программы не требует прав администратора для запуска.
Если для запуска программы B не требуются права администратора (включая использование служб, работающих с правами администратора), запустите ее в контексте другой учетной записи пользователя на вашем компьютере , которая не имеет прав администратора. Для этого нажмите Shift+ правую кнопку мыши на программе, чтобы получить опцию Запуск от имени другого пользователя .
Программа будет работать в контексте другой учетной записи пользователя, и, поскольку эта учетная запись не имеет прав администратора, она не может перечислять процессы, запущенные в контексте других пользователей. Поэтому он не сможет "увидеть" процесс другой программы.
Если вам нужны программы для совместного доступа к ресурсам файловой системы или реестра, просто предоставьте обеим учетным записям доступ к указанным ресурсам. Это не позволит одной программе увидеть другую.
Сценарий 2. Проверка программы для другой программы требует административных прав для запуска.
Приложение, которое запускается в контексте учетной записи с правами администратора, может делать все, что пожелает, на вашем компьютере, что делает чрезвычайно сложной задачу подорвать его прерогативу для использования этих привилегий. Единственный способ продвинуться вперед - узнать точные тесты, которые выполняет программа, чтобы определить, запущено ли другое приложение, а затем перехватить различные вызовы функций API, чтобы удалить существование целевой программы из возвращаемых данных. Так руткиты скрывают свое присутствие на компьютере. Это выходит далеко за рамки этого конкретного ответа (и вообще сайта Супер пользователя).