On the managed side you're pretty much limited to obfuscation, while on the unmanaged side you get to rely on the Average Joe's ignorance of assembly. Being honest, is your code so groundbreaking and important that it must be protected at all costs? If so then write a system extension that monitors attempts to do anything other than execute your files - but I can guarantee that such software will never be allowed anywhere near the majority of PCs...