Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / CompMod / System / ComponentModel / LicFileLicenseProvider.cs / 1305376 / LicFileLicenseProvider.cs
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
namespace System.ComponentModel {
using System;
using System.ComponentModel.Design;
using System.Diagnostics;
using System.Globalization;
using System.IO;
using System.Reflection;
using System.Runtime.Remoting;
using System.Security.Permissions;
///
///
/// Provides an implementation of a . The provider works in
/// a similar fashion to Microsoft .NET Framework standard licensing module.
///
[HostProtection(SharedState = true)]
public class LicFileLicenseProvider : LicenseProvider {
///
///
/// Determines if the key retrieved by the method is valid
/// for the specified type.
///
protected virtual bool IsKeyValid(string key, Type type) {
if (key != null) {
return key.StartsWith(GetKey(type));
}
return false;
}
///
///
/// Creates a key for the specified type.
///
protected virtual string GetKey(Type type) {
// This string should not be localized.
//
return string.Format(CultureInfo.InvariantCulture, "{0} is a licensed component.", type.FullName);
}
///
///
/// Gets a license for the instance of the component and determines if it is valid.
///
public override License GetLicense(LicenseContext context, Type type, object instance, bool allowExceptions) {
LicFileLicense lic = null;
Debug.Assert(context != null, "No context provided!");
if (context != null) {
if (context.UsageMode == LicenseUsageMode.Runtime) {
string key = context.GetSavedLicenseKey(type, null);
if (key != null && IsKeyValid(key, type)) {
lic = new LicFileLicense(this, key);
}
}
if (lic == null) {
string modulePath = null;
if (context != null) {
ITypeResolutionService resolver = (ITypeResolutionService)context.GetService(typeof(ITypeResolutionService));
if (resolver != null) {
modulePath = resolver.GetPathOfAssembly(type.Assembly.GetName());
}
}
if (modulePath == null) {
modulePath = type.Module.FullyQualifiedName;
}
string moduleDir = Path.GetDirectoryName(modulePath);
string licenseFile = moduleDir + "\\" + type.FullName + ".lic";
Debug.WriteLine("Looking for license in: " + licenseFile);
if (File.Exists(licenseFile)) {
Stream licStream = new FileStream(licenseFile, FileMode.Open, FileAccess.Read, FileShare.Read);
StreamReader sr = new StreamReader(licStream);
string s = sr.ReadLine();
sr.Close();
if (IsKeyValid(s, type)) {
lic = new LicFileLicense(this, GetKey(type));
}
}
if (lic != null) {
context.SetSavedLicenseKey(type, lic.LicenseKey);
}
}
}
return lic;
}
private class LicFileLicense : License {
private LicFileLicenseProvider owner;
private string key;
public LicFileLicense(LicFileLicenseProvider owner, string key) {
this.owner = owner;
this.key = key;
}
public override string LicenseKey {
get {
return key;
}
}
public override void Dispose() {
GC.SuppressFinalize(this);
}
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
namespace System.ComponentModel {
using System;
using System.ComponentModel.Design;
using System.Diagnostics;
using System.Globalization;
using System.IO;
using System.Reflection;
using System.Runtime.Remoting;
using System.Security.Permissions;
///
///
/// Provides an implementation of a . The provider works in
/// a similar fashion to Microsoft .NET Framework standard licensing module.
///
[HostProtection(SharedState = true)]
public class LicFileLicenseProvider : LicenseProvider {
///
///
/// Determines if the key retrieved by the method is valid
/// for the specified type.
///
protected virtual bool IsKeyValid(string key, Type type) {
if (key != null) {
return key.StartsWith(GetKey(type));
}
return false;
}
///
///
/// Creates a key for the specified type.
///
protected virtual string GetKey(Type type) {
// This string should not be localized.
//
return string.Format(CultureInfo.InvariantCulture, "{0} is a licensed component.", type.FullName);
}
///
///
/// Gets a license for the instance of the component and determines if it is valid.
///
public override License GetLicense(LicenseContext context, Type type, object instance, bool allowExceptions) {
LicFileLicense lic = null;
Debug.Assert(context != null, "No context provided!");
if (context != null) {
if (context.UsageMode == LicenseUsageMode.Runtime) {
string key = context.GetSavedLicenseKey(type, null);
if (key != null && IsKeyValid(key, type)) {
lic = new LicFileLicense(this, key);
}
}
if (lic == null) {
string modulePath = null;
if (context != null) {
ITypeResolutionService resolver = (ITypeResolutionService)context.GetService(typeof(ITypeResolutionService));
if (resolver != null) {
modulePath = resolver.GetPathOfAssembly(type.Assembly.GetName());
}
}
if (modulePath == null) {
modulePath = type.Module.FullyQualifiedName;
}
string moduleDir = Path.GetDirectoryName(modulePath);
string licenseFile = moduleDir + "\\" + type.FullName + ".lic";
Debug.WriteLine("Looking for license in: " + licenseFile);
if (File.Exists(licenseFile)) {
Stream licStream = new FileStream(licenseFile, FileMode.Open, FileAccess.Read, FileShare.Read);
StreamReader sr = new StreamReader(licStream);
string s = sr.ReadLine();
sr.Close();
if (IsKeyValid(s, type)) {
lic = new LicFileLicense(this, GetKey(type));
}
}
if (lic != null) {
context.SetSavedLicenseKey(type, lic.LicenseKey);
}
}
}
return lic;
}
private class LicFileLicense : License {
private LicFileLicenseProvider owner;
private string key;
public LicFileLicense(LicFileLicenseProvider owner, string key) {
this.owner = owner;
this.key = key;
}
public override string LicenseKey {
get {
return key;
}
}
public override void Dispose() {
GC.SuppressFinalize(this);
}
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- BindingMAnagerBase.cs
- HotSpot.cs
- ListDictionary.cs
- RightsManagementEncryptedStream.cs
- TrustLevelCollection.cs
- StylusPointPropertyId.cs
- EditBehavior.cs
- XmlAttributeOverrides.cs
- ProjectionPath.cs
- InternalConfigConfigurationFactory.cs
- DataObjectPastingEventArgs.cs
- X509Certificate.cs
- SafeRightsManagementSessionHandle.cs
- TypeConverterAttribute.cs
- WebPartPersonalization.cs
- Compiler.cs
- PeerTransportBindingElement.cs
- MessageHeaders.cs
- TypeSystemProvider.cs
- SimpleModelProvider.cs
- PathSegmentCollection.cs
- Polyline.cs
- ComplusEndpointConfigContainer.cs
- MetadataArtifactLoaderCompositeResource.cs
- ThreadPool.cs
- FunctionImportMapping.ReturnTypeRenameMapping.cs
- Win32Exception.cs
- AsyncResult.cs
- OdbcDataReader.cs
- XPathSelectionIterator.cs
- SqlXmlStorage.cs
- Oci.cs
- SchemaElementLookUpTableEnumerator.cs
- XmlSchemaCompilationSettings.cs
- CodeConditionStatement.cs
- DefaultProfileManager.cs
- IdentifierCreationService.cs
- StringCollection.cs
- ChannelSinkStacks.cs
- SR.cs
- TextEditorDragDrop.cs
- DescendantBaseQuery.cs
- UserUseLicenseDictionaryLoader.cs
- ToolStripItemCollection.cs
- WebConfigurationHostFileChange.cs
- DbDataSourceEnumerator.cs
- GACMembershipCondition.cs
- XpsInterleavingPolicy.cs
- DependencyObjectProvider.cs
- securitycriticaldata.cs
- DecoderBestFitFallback.cs
- InputLangChangeEvent.cs
- BindingListCollectionView.cs
- KeySpline.cs
- CompoundFileStorageReference.cs
- SignedXml.cs
- DataGridViewImageColumn.cs
- StrongName.cs
- XmlUtilWriter.cs
- SharedDp.cs
- ZoneMembershipCondition.cs
- ExecutionContext.cs
- DownloadProgressEventArgs.cs
- HttpHandlerAction.cs
- Empty.cs
- CannotUnloadAppDomainException.cs
- DispatchWrapper.cs
- ByteArrayHelperWithString.cs
- basemetadatamappingvisitor.cs
- Rect3D.cs
- NamespaceExpr.cs
- MachineKeySection.cs
- ReferenceConverter.cs
- Cursor.cs
- PropertyManager.cs
- CollectionsUtil.cs
- MemberRestriction.cs
- __ConsoleStream.cs
- MessageSecurityVersionConverter.cs
- BitmapMetadataEnumerator.cs
- MetadataUtilsSmi.cs
- FilterElement.cs
- SafeTimerHandle.cs
- storagemappingitemcollection.viewdictionary.cs
- ResourceAssociationSet.cs
- DockProviderWrapper.cs
- ContentType.cs
- InstanceKeyCompleteException.cs
- NextPreviousPagerField.cs
- XmlBuffer.cs
- TdsEnums.cs
- PointHitTestResult.cs
- GridViewRowCollection.cs
- DateTime.cs
- XmlSchemaSimpleContentRestriction.cs
- ReachDocumentReferenceSerializerAsync.cs
- PrimaryKeyTypeConverter.cs
- SchemaImporter.cs
- WmlLabelAdapter.cs
- AdRotator.cs