.NET에서 C#을 사용하여 쓰기 권한이 있는지 프로그래밍 방식으로 어떻게 결정할 수 있습니까?

StackOverflow https://stackoverflow.com/questions/137031

문제

.NET에서 C#을 사용하여 인트라넷의 원격 시스템에 쓰기 권한이 있는지 어떻게 판단 할 수 있습니까?

도움이 되었습니까?

해결책

간단한 대답은 그것을 시도하고 보는 것입니다. Windows Security API는 희미한 마음을위한 것이 아니며 허가를 볼 수있는 권한없이 쓰기 권한이있을 수 있습니다!

다른 팁

내가 찾은 가장 좋고 가장 신뢰할 수있는 솔루션도 다음과 같습니다.

bool hasWriteAccess = true;
string remoteFileName = "\\server\share\file.name"

try
{
    createRemoteFile(remoteFileName);   
}
catch (SystemSecurityException)
{
     hasWriteAccess = false;   
}

if (File.Exists(remoteFileName))
{
    File.Delete(remoteFileName);
}

return hasWriteAccess;

이 포럼 게시물을 확인하십시오.

http://bytes.com/forum/thread389514.html

그것은 객체를 사용하는 것을 설명합니다 System.Security.AccessControl 파일에 대한 ACL 권한 목록을 얻는 네임 스페이스. .NET 2.0 이상에서만 사용할 수 있습니다. 또한 SMB 네트워크가 있다고 가정합니다. 당신이 비 독사 네트워크를 사용하고 있다면 그것이 무엇을 할 것인지 잘 모르겠습니다.

.NET 2.0 이상이 아닌 경우 일반적인 Pinvoke 및 Win32 API 재즈입니다.

Scottkoon은 Windows ACL 권한을 확인하는 것에 대해 글을 쓰고 있습니다. CAS (Code Access Security)를 사용하여 관리 코드 권한을 확인할 수도 있습니다. 이것은 권한을 제한하는 .NET 특정 방법입니다. 사용자에게 쓰기 권한이 없으면 코드에는 쓰기 권한이 없습니다 (CAS가 말해더라도) - 두 승리 사이의 가장 제한적인 권한입니다.

CAS는 사용하기가 매우 쉽습니다. 방법을 시작하는 선언 속성을 추가 할 수도 있습니다. 당신은 더 많은 것을 읽을 수 있습니다 MSDN

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top