Chamar API do Windows e também objetos ActiveX exige um privilégio alto de segurança – tipicamente ”Full Trust”. Isto virtualmente desliga o mecanismo de Code Access Security e atrapalha bastante a criação de um ambiente de execução seguro.
Você deve tentar usar uma funcionalidade disponível como código gerenciado. Às vezes é simplesmente uma questão de procurá-la.
Caso seja realmente necessário usar tal funcionalidade, o ideal é criar uma DLL que encapsule as chamadas. Esta DLL deve ser escrita com bastante cuidado de maneira a não ser usada de forma insegura. Depois, esta DLL apenas - e não os programas que a usam - recebe privilégios maiores.
É desta maneira que a Microsoft disponibiliza diversas funcionalidades do Windows de forma segura.