Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / whidbey / NetFxQFE / ndp / fx / src / CompMod / System / ComponentModel / LicFileLicenseProvider.cs / 1 / 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() {
}
}
}
}
// 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() {
}
}
}
}
// 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
- COM2IProvidePropertyBuilderHandler.cs
- ListViewInsertedEventArgs.cs
- BulletedListEventArgs.cs
- ScriptingProfileServiceSection.cs
- ItemChangedEventArgs.cs
- EditorServiceContext.cs
- ToolStripItem.cs
- _FtpControlStream.cs
- XmlSchemaComplexContentRestriction.cs
- filewebresponse.cs
- PreviewKeyDownEventArgs.cs
- AtlasWeb.Designer.cs
- ThicknessAnimationUsingKeyFrames.cs
- COM2ICategorizePropertiesHandler.cs
- FlowDocumentScrollViewer.cs
- QueryOperator.cs
- SafeMILHandle.cs
- SelectedPathEditor.cs
- InternalControlCollection.cs
- XmlValidatingReaderImpl.cs
- CreatingCookieEventArgs.cs
- ViewCellSlot.cs
- PerformanceCounterLib.cs
- ListenerConnectionDemuxer.cs
- BinaryObjectWriter.cs
- GZipObjectSerializer.cs
- ListViewAutomationPeer.cs
- SqlAggregateChecker.cs
- ObjectDataSource.cs
- TextAdaptor.cs
- NetworkInterface.cs
- TypeResolvingOptionsAttribute.cs
- ConfigXmlText.cs
- DefaultCommandConverter.cs
- RemoteWebConfigurationHostServer.cs
- ForAllOperator.cs
- TdsParserStaticMethods.cs
- MeasureData.cs
- SafeNativeMethods.cs
- SharedStatics.cs
- PhysicalFontFamily.cs
- TargetParameterCountException.cs
- ToolboxItemCollection.cs
- GraphicsState.cs
- LookupBindingPropertiesAttribute.cs
- LogStore.cs
- TableCell.cs
- MiniAssembly.cs
- Sql8ConformanceChecker.cs
- ResizeGrip.cs
- DataGridPagerStyle.cs
- ColorTranslator.cs
- PrtCap_Public_Simple.cs
- EpmAttributeNameBuilder.cs
- XmlSchemaAnnotation.cs
- RSAPKCS1SignatureDeformatter.cs
- ObjectDisposedException.cs
- WebRequestModuleElementCollection.cs
- DataSourceHelper.cs
- XmlAttributeHolder.cs
- XomlSerializationHelpers.cs
- Collection.cs
- PreProcessor.cs
- ObjectDataProvider.cs
- RegularExpressionValidator.cs
- NegationPusher.cs
- PublishLicense.cs
- Attribute.cs
- FixedBufferAttribute.cs
- JsonWriterDelegator.cs
- DataGridClipboardHelper.cs
- TextEditorTables.cs
- ClientConfigurationHost.cs
- ArgumentException.cs
- EntityDataSourceValidationException.cs
- BasePattern.cs
- ExpressionPrinter.cs
- ScrollBarRenderer.cs
- ReadOnlyDataSource.cs
- KeyedPriorityQueue.cs
- ToolBar.cs
- ConcurrentBag.cs
- AdornedElementPlaceholder.cs
- UnmanagedMemoryAccessor.cs
- ValidationPropertyAttribute.cs
- Point4DConverter.cs
- OrthographicCamera.cs
- ResourcesBuildProvider.cs
- LocalFileSettingsProvider.cs
- DataTemplateSelector.cs
- XmlDataSourceDesigner.cs
- CatalogZone.cs
- CurrencyWrapper.cs
- SerializerProvider.cs
- OracleInternalConnection.cs
- ClientScriptManagerWrapper.cs
- RelationshipType.cs
- IdentityHolder.cs
- DataViewManager.cs
- DataGridViewRowErrorTextNeededEventArgs.cs