What do you mean by an "unmanaged assembly" - do you mean a standard DLL/EXE as opposed to a .NET one? If ythat is the case you could read the PE file headers and locate the CLI Header (which indicates that it is a .NET executable image. For the PE layout see Partition II of the CLI specification - its towards the end of the document.