TL; DR: ISSO SOBE COMO UMA IDÉIA MAU
Há provavelmente uma boa razão pela qual o B foi projetado para não rodar enquanto o A está rodando. A primeira coisa que vem à mente é que eles compartilham um banco de dados, chaves de registro ou alguma outra fonte de dados binários que pode estar corrompida se tratada por dois threads de uma só vez. De qualquer maneira, sem dar mais informações sobre os programas e como B poderia detectar qualquer coisa que qualquer um pode fazer é adivinhar. Se este for um programa do Windows, o Programa A provavelmente escreve algum tipo de chave de registro que B verifica durante a inicialização. Mas, então, ele também poderia desativar algum tipo de arquivo temporário. A possibilidade de esconder coisas de qualquer tipo de lista de processos me deixaria muito cauteloso em continuar a usar esse sistema, já que teria ramificações de segurança muito sérias. Você está basicamente perguntando como rootkit seu sistema.