권한없이 새 AppDomain에 어셈블리를로드 한 작은 예제를 설정했습니다. 이 잘 작동, 어셈블리 파일 시스템에 액세스 할 수 없으며 소켓을 수신 대기 할 수 없습니다.AppDomain에서 스레드 만들기 방지
그러나 내가 막으려 고하는 또 다른 것이 있습니다. 스레드 생성입니다. 왜? 이론적으로이 어셈블리는 스레드를 만들어서 더 많은 스레드를 만들고 메모리를 가득 채울 수 있습니다.
나는 (내 의견으로는) 최선의 방법이라고 생각했다. AppDomain의 메모리 제한. 이것이 가능한가? 그리고 그렇지 않다면 스레드 생성을 피하기 위해 무엇을 할 수 있습니까?
는 (좋아, 나는 내가로드 할 폴더에있는 파일 시스템에 대한 액세스 권한을 준 스레드
Thread t = new Thread(this.DoWork);
t.Start();
그리고 응용 프로그램 도메인
PermissionSet set = new PermissionSet(PermissionState.None);
set.AddPermission(new SecurityPermission(SecurityPermissionFlag.Execution));
set.AddPermission(new FileIOPermission(FileIOPermissionAccess.Read |
FileIOPermissionAccess.PathDiscovery,
this.path));
AppDomainSetup info = new AppDomainSetup { ApplicationBase = this.path };
this.domain = AppDomain.CreateDomain("Sandbox", null, info, set, null);
이 코드를 만들려면이 코드를 사용 조립, 이것은 단지 StrongName fullTrustAssembly = typeof(SecureInstance).Assembly.Evidence.GetHostEvidence<StrongName>();
때문에 어느 나를 위해 작동하지 않는 것입니다
희망의/O를 도울 수 (:..
당신은 할 수 없다. AFAIK :) 당신이 할 수있는 유일한 일은 스레드 풀에있는 스레드의 한계를 설정하는 것이다. – Elastep
AFAIK 모든 AppDomain은 적어도 하나의 스레드를 생성해야한다. 그렇지 않으면 실행할 수 없다. 따라서 스레드 생성을 비활성화하면 모든 IMHO에서 실행할 수 없다는 것을 의미합니다. 무엇을 성취하려고합니까? – Yahia
@Elastep 답변 해 주셔서 감사합니다. 어떤 소프트웨어라도 스레드 제한을 늘릴 수 있다고 생각합니다. 모든 것이 Java에 큰 도움이됩니다. 자바에서는 스레드 생성 전에 SecurityManager에 묻습니다. –