Visual C++ .NET/Security/CodeAccessPermission
Версия от 15:31, 26 мая 2010; (обсуждение)
Assert Deny Permissions
#include "stdafx.h"
using namespace System;
using namespace System::IO;
using namespace System::Security;
using namespace System::Security::Permissions;
void AssertRead()
{
CodeAccessPermission ^permission = gcnew FileIOPermission(FileIOPermissionAccess::Read, "C:\\Test");
permission->Assert();
StreamReader ^sr = File::OpenText("C:\\TestFile.txt");
String ^s = sr->ReadLine();
sr->Close();
permission->RevertAssert();
Console::WriteLine("Successful Read");
}
void NoAssertRead()
{
StreamReader ^sr = File::OpenText("C:\\TestFile.txt");
String ^s = sr->ReadLine();
sr->Close();
Console::WriteLine("Successful Read");
}
void main()
{
CodeAccessPermission ^permissionRead = gcnew FileIOPermission(FileIOPermissionAccess::Read, "C:\\Test");
permissionRead->Deny();
try
{
AssertRead();
NoAssertRead();
}
catch(SecurityException^)
{
Console::WriteLine("Failed To Read");
}
permissionRead->RevertDeny();
CodeAccessPermission ^permissionWrite = gcnew FileIOPermission(FileIOPermissionAccess::Write, "C:\\Test");
permissionWrite->PermitOnly();
try
{
AssertRead();
NoAssertRead();
}
catch(SecurityException^)
{
Console::WriteLine("Failed To Read");
}
permissionWrite->RevertPermitOnly();
}