2009-05-28 5 views
3

디렉토리 (Directory.GetFiles())를 나열하고 반환 된 파일 중 하나에 액세스해야하는 C# 응용 프로그램이 있습니다. 로컬에서 응용 프로그램을 실행하면 문제가 네트워크 위치 또는 로컬 위치에 있지 않습니다. 네트워크 공유에서 실행하면 공유에 액세스 할 때 보안 예외가 발생합니다. http://blogs.msdn.com/shawnfa/archive/2003/06/20/57023.aspx내 .net 응용 프로그램이 로컬 컴퓨터에서 작동하지만 네트워크 위치에서 사용될 때 실패합니다.

그러나 해결책이 보인다 ... 허무 내가 오해하고하지 않는 :

내가 왜 이런 일을 발견.

1) 코드를 사용할 수 없습니다 (거의 옵션이 아닙니다). 2) 어셈블리에 서명 한 다음 사용하려는 사람이 누구든지 .NET 정책을 허용하도록 구성 할 수 있습니까? (이것은 내가 말하지 않는 정책 중 하나를 바꾸기 위해 사용하는 사람에게 달려 있습니다.) 3) localintranet의 모든 것에 대해 완전한 신뢰를 허용하는 정책 변경 (내 경우에는 권장되지 않거나 가능하지도 않음)

내가 여기에 뭔가를 놓치고있다, 그 선택의 아무도 독립 실행 형 응용 프로그램에 대한 네트워크에 밀어 넣은 최적의 것 같지 않습니다. 나는 네트워크 공유에서 응용 프로그램을 실행하는 비교적 간단한 것으로 생각했을 것입니다. 전화 번호부에있는 파일을 목록으로 만들면 그러한 미친 고리가 작동하도록 뛰어 넘을 필요가 없습니다.

누구나 내가이 상황에서 할 수있는 것에 대해 생각하고 있습니까?

+0

중복 : http://stackoverflow.com/questions/148879/why-does-my-net-application-crash-when-run -from-a-network-drive –

답변

4

이 스레드는 질문에 대답합니다, 내 생각 :

는이 문제는 .NET 프레임 워크 3.5 SP1을 변경, 어디 프로그램은 도망 허용하는 기본값 네트워크 공유.

그리고 네, 그것은 매우 실용적 생각하지 않지만, 할 불행하게도 많이하지 그것에 대해이 ...

+0

중복 된 링크는 투표로 종료 될 때 댓글 /로 게시되어야합니다. – Noldorin

+0

좋은 지적; 그것에 행동합니다 :) –

3

나는 (등 VS2008에서 "게시"참조)의 ClickOnce 응용 프로그램으로 배포합니다. ClickOnce는 네트워크 공유에 위치 ​​할 수 있습니다. .exe 대신 .application을 실행하면됩니다. 이 경우 직접 실행하는 보안 문제가 없으며 .NET 2.0으로 다시 돌아갈 수 있습니다.

관련 문제