이제 클라이언트들이 쉽게 보안을 설정할 수 있게 해주는 프로그램을 만들어 보도록 하겠다. 프로그램은 아주 간단하다. 기존 프로젝트에 콘슬 응용 프로그램 프로젝트를 추가하도록 하자.
 [콘슬 응용 프로그램 프로젝트 생성]
using System.Security; using System.Security.Policy; using System.Windows.Forms //참조 추가에서 dll 참조함 |
ToolboxDataAttribute는 나중에 페이지에서 사용할 때 기본으로 지정되는 속성과 이름이다. HoonsJumin이라는 클래스를 생성했
001 static void Main(string[] args) 002 { 003 // Machine(Local) 영역을 접근한다. 004 const string userPolicyLevel = "Machine"; 005 PolicyLevel level = null; 006 System.Collections.IEnumerator ph =System.Security.SecurityManager.PolicyHierarchy(); 007 008 //Machine 레벨을 가져온다. 009 while (ph.MoveNext()) 010 { 011 level = (PolicyLevel)ph.Current; 012 if (level.Label == userPolicyLevel) 013 break; 014 } 015 016 // 이미 추가가 되었는지 확인한다. 017 foreach (CodeGroup group in level.RootCodeGroup.Children) 018 { 019 if (group.Name == "HOONS") 020 return; 021 } 022 //권한생성 023 NamedPermissionSet permissionSet = new NamedPermissionSet("FullTrust"); 024 PolicyStatement policyStatement = new PolicyStatement(permissionSet); 025 //URL멤버쉽 생성 026 IMembershipCondition membership = new 021 UrlMembershipCondition(@"http:// localhost:2005/*"); 027 //코드그룹에 추가 028 UnionCodeGroup cg = new UnionCodeGroup(membership, policyStatement); 029 //이름생성 030 cg.Name = "HOONS"; 031 cg.Description = " HOONS Test 입니다."; 032 // 그룹추가 033 level.RootCodeGroup.AddChild(cg); 034 //적용 035 System.Security.SecurityManager.SavePolicy(); 036 System.Windows.Forms.MessageBox.Show("보안 설정이 완료되었습니다.", "알림"); 037 } |
[소스 설명]
9~14 줄에서는 컴퓨터(machine)의 보안정책을 가져오기 위해서 엔터프라이즈(Enterprise), 컴퓨터(Machine), 사용자(User) 들 중에서 컴퓨터의 위치를 기억해두고 Loop을 빠져 나오고 있다. 17~21 줄은 이미 같은 이름의 권한이 추가 되어있는지 확인하고 있고 만약 있다면 프로그램을 빠져 나오게 된다. 22~36 줄은 권한(Permission)과 URL 멤버쉽을 생성했다. 그리고 코드그룹에 추가하고, SavePolicy() 메서드를 호출해서 권한을 적용하고 있다. |
모든 코드 작성이 끝났다면 콘슬창이 뜨지 않도록 설정 해야 한다. 프로젝트에서 오른쪽 마우스를 누르고 속성을 선택한다. 속성 창이 열리면 응용 프로그램 메뉴에 아래와 같이 Windows 응용 프로그램으로 설정한다.
 [출력형식 변경]
이제 컴파일을 해서 프로그램을 실행해 보자. 그럼 자동으로 권한이 추가가 되는 것을 볼 수 있을 것이다.
 [자동으로 설정된 보안]
|