티스토리 뷰

반응형
이제 클라이언트들이 쉽게 보안을 설정할 수 있게 해주는 프로그램을 만들어 보도록 하겠다. 프로그램은 아주 간단하다. 기존 프로젝트에 콘슬 응용 프로그램 프로젝트를 추가하도록 하자.




[콘슬 응용 프로그램 프로젝트 생성]

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 응용 프로그램으로 설정한다.



[출력형식 변경]




이제 컴파일을 해서 프로그램을 실행해 보자. 그럼 자동으로 권한이 추가가 되는 것을 볼 수 있을 것이다.



[자동으로 설정된 보안]

반응형
댓글