2009-05-20 6 views
1

잘못된 경로로 향하기 전에 포인터를 찾고 있습니다. 나는 HKEY_LOCAL_MACHINE과 HKEY_CURRENT_USER 둘 다에서 사용자 레지스트리를 열고 읽고 쓰고 삭제하는 작은 C# 콘솔 앱을 작성했습니다C# 콘솔 응용 프로그램에서 호출 할 때 RegistryPermission 오류

물론 내 PC와 모든 테스트 PC에서 작동하지만 클라이언트 중 하나는 System.Security.Permissions.RegistryPermission, mscorlib에, 버전 = 2.0.0.0 '유형의 허가 요청을, 문화 = 중립 : 그들은 .EXE에게

System.Security.SecurityException를 실행하려고하면 오류가 , PublicKeyToken = b77a5c561934e089 '실패했습니다. Microsoft.Win32.RegistryKey.CheckSubKeyReadPermission (문자열 subkeyName) 에서 System.Security.CodeAccessPermission.Demand() 에서 System.Security.CodeAccessSecurityEngine.Check에서

(개체 수요, StackCrawlMark & stackMark, 부울 isPermSet) 에서 EstateMasterClearReg.Program.Main에서 Microsoft.Win32.RegistryKey.OpenSubKey (문자열 이름, 부울 쓰기) 에서 Microsoft.Win32.RegistryKey.CheckOpenSubKeyPermission (문자열 subkeyName 부울> subKeyWritable) (문자열 [] 인수)

조치 실패한 것은 :

수요. 실패한 첫 번째 권한 유형이었다 인트라넷

내가 클라이언트에서이를 테스트 할 수 없습니다 같이했다 실패 System.Security.Permissions.RegistryPermission 어셈블리의 존 기계 (그리고 그들이 .exe가 로컬로 실행되고 Admin으로 로그인되었다고 말했습니다.) 제가 앱이 어떤 머신에서 실행될 수 있도록하기 위해 할 수있는 일이 있습니까?

강력한 이름의 키와 AllowPartiallyTrustedCallers를 사용해야합니까, 아니면 System.Security.Permissions.RegistryPermission을 사용해야합니까?

도움 주셔서 감사합니다.

+0

그런데 "로컬에서 실행"으로 귀하 또는 클라이언트가 의미하는 것을 정의 할 수 있습니까? .EXE가 로컬 드라이브에 있고 거기에서 실행된다는 것을 의미합니까? –

+0

그건 내 가정 이었어. (그들이 전화로 내게 말한 것.) 아래의 설명을 업데이트했으나, 기본적으로 나는 C 드라이브에 저장하고 거기에서 실행해야한다고 말한 것입니다. – Skittles

답변

2

그들은 네트워크를 통해 실행 파일을 실행하고있는 것처럼 보입니다. 로컬 하드 드라이브로 복사 한 다음 다시 실행 해보십시오. 실행 파일에 할당 된 사용 권한은 네트워크 공유에서 실행하는 것과 로컬 파일 시스템에서 실행하는 것과 다릅니다.

또는 기본 보안 설정을 수정하여 로컬로 실행중인 경우에도 인트라넷 영역의 일부로 간주 될 수 있습니다. 그것도 확인하십시오.

여기에 팁도 도움이 될 수있다 : 당신이 당신의 어셈블리에 강력한 이름을 제공하는 경우, 당신은 여전히 ​​로컬 보안 정책을해야한다는

http://blogs.msdn.com/shawnfa/archive/2003/06/20/57023.aspx

는 적절한 권한을 어셈블리를 제공하기 위해 수정해야 . 강력한 이름만으로는 추가 권한이 필요하지 않습니다.

+0

감사합니다. 그게 내가 생각하기도하고 물었습니다. 그들은 자신의 로컬 드라이브에 복사하고 관리자 권한을 가지고 거기에서 실행하고 있다고 말했습니다. – Skittles

+0

당신이 맞았는데, 나는 그들이 로컬 드라이브에서 돌아 다니고 있지 않다는 것을 알았습니다. 그들은 보안상의 이유로 C 드라이브를 잠 갔다고 말했습니다. 이제는 네트워크 드라이브에서 실행하는 방법을 찾아야합니다. – Skittles

+0

네트워크 공유에서 실행되는 실행 파일의 권한을 높이려면 위의 shawnfa의 블로그 게시물에 설명 된 기술이 도움이 될 것입니다. 강력한 이름을 지정한 다음 각 시스템에서 보안 정책을 구성하게하십시오. 또는, 너무 많은 문제가 있다면, 아마 USB 엄지 드라이브에서 실행할 것입니까? 그것들은 지역이라고 여겨 질 것입니다. –

관련 문제