Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / 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
- ValidationErrorEventArgs.cs
- RootDesignerSerializerAttribute.cs
- TextServicesManager.cs
- Object.cs
- FontSizeConverter.cs
- MenuItemBinding.cs
- PagedDataSource.cs
- HttpDictionary.cs
- RecognitionEventArgs.cs
- FormViewDeletedEventArgs.cs
- Fault.cs
- HtmlWindow.cs
- DataGridViewBand.cs
- ArithmeticException.cs
- SqlClientMetaDataCollectionNames.cs
- DynamicResourceExtensionConverter.cs
- AndMessageFilterTable.cs
- ToggleButtonAutomationPeer.cs
- InvalidDataException.cs
- XmlWrappingReader.cs
- OleDbConnectionInternal.cs
- PrimaryKeyTypeConverter.cs
- CellParaClient.cs
- SpeechSeg.cs
- DocumentXPathNavigator.cs
- ResourcesBuildProvider.cs
- TimelineCollection.cs
- PropertyNames.cs
- ToolTipAutomationPeer.cs
- KeyInterop.cs
- ClientScriptManager.cs
- TypedElement.cs
- File.cs
- UniqueIdentifierService.cs
- CSharpCodeProvider.cs
- TextRange.cs
- GlyphsSerializer.cs
- ConnectionStringsSection.cs
- VScrollProperties.cs
- TransformCollection.cs
- DataGridViewRowEventArgs.cs
- HwndHostAutomationPeer.cs
- WebDisplayNameAttribute.cs
- WebPartsPersonalization.cs
- XDRSchema.cs
- BlurBitmapEffect.cs
- TextDecoration.cs
- DataGridViewCellStateChangedEventArgs.cs
- ObjectConverter.cs
- TimeSpanSecondsOrInfiniteConverter.cs
- SourceLineInfo.cs
- DataTransferEventArgs.cs
- CoTaskMemSafeHandle.cs
- MediaElementAutomationPeer.cs
- PostBackOptions.cs
- SqlWorkflowInstanceStoreLock.cs
- WorkflowViewElement.cs
- Publisher.cs
- TemplateXamlTreeBuilder.cs
- DocumentViewerAutomationPeer.cs
- FixedDSBuilder.cs
- NativeMethods.cs
- XmlElementList.cs
- CompilationUtil.cs
- SafeRightsManagementHandle.cs
- uribuilder.cs
- IDReferencePropertyAttribute.cs
- WebPartDisplayMode.cs
- BoundColumn.cs
- ResourceWriter.cs
- UIElementPropertyUndoUnit.cs
- AssemblyCollection.cs
- XPathChildIterator.cs
- Pkcs9Attribute.cs
- WindowsFormsHost.cs
- GestureRecognitionResult.cs
- HelpKeywordAttribute.cs
- HandleValueEditor.cs
- CodeDomLocalizationProvider.cs
- OleDbFactory.cs
- Composition.cs
- DataComponentMethodGenerator.cs
- MoveSizeWinEventHandler.cs
- RegexMatchCollection.cs
- DisplayNameAttribute.cs
- WindowsRichEdit.cs
- JpegBitmapEncoder.cs
- ListViewItem.cs
- StaticExtension.cs
- ItemsPanelTemplate.cs
- SendMailErrorEventArgs.cs
- Tile.cs
- FontStyleConverter.cs
- WorkflowDefinitionDispenser.cs
- CodeIdentifier.cs
- QfeChecker.cs
- SchemaImporter.cs
- EventsTab.cs
- LexicalChunk.cs
- TransportContext.cs