См. Эту статью.
В основном вам нужно создать AppDomain
, который использует пользовательский PermissionSet
... который позволяет блокировать подобные вещи приложения .NET имеет разрешение делать.
Существуют различные способы его создания.
Вы можете использовать предопределенную, определенную существующей зоной группы кода (Интранет, Интернет, MyComputer и т. Д.), Или вы можете создать свой собственный.
Это можно сделать программно, или это можно сделать с помощью caspol.exe
.
При создании этого вторичного AppDomain
это фактически «живет» в рамках одного процесса Windows, в качестве приложения .... NET только обеспечивает «изоляцию» слой, который сохраняет каждый AppDomain отделено. Если вы ультра параноидны и не доверяете этому изолирующему слою, тогда вы можете создать новый процесс Windows и запустить свою DLL внутри этого ... хотя это может занять некоторое время.
Чтобы ограничить доступ, что AppDomain
имеет к ресурсам Windows (файлы, реестр и т.д.), вы можете изменить принципал безопасности Windows т.е. получить его будет работать под другой учетной записью Windows, которая имеет более низкие привилегии.
Вероятно, по касательной здесь ... но и некоторые другие вещи, которые могли бы помочь ... в зависимости от того, что вы пытаетесь достичь ...
Если у вас есть чувствительную информацию, которую вы хотите свести к минимуму, чтобы быть открываемым (например, кем-то, кто тратит через память), затем используйте SecureString
.
Если вы хотите, чтобы предотвратить какие-либо из вашей «код» или «данные» быть выгружен на диск (в файл подкачки), то вы можете использовать пользовательские CLR хоста так, чтобы он сохраняет все в физической памяти.
вы можете использовать это - http://stackoverflow.com/questions/6578170/using-appdomain-in-c-sharp-to-dynamically-load-and-unload-dll –
Я считаю, что это будет связано с множеством кода. Для части загрузки DLL вы можете использовать Reflection, искать динамическую загрузку DLL и выполнять методы. Для части безопасности вы можете проверить SecurityModel для .NET 4.0 esp. где хост может ограничиться доступом к другим ресурсам. Что касается AppDomain, вы можете создавать и обмениваться ресурсами. –