72 lines
2 KiB
C#
72 lines
2 KiB
C#
using System;
|
|
using System.Runtime.InteropServices;
|
|
using Decal.Adapter.Support;
|
|
using Decal.Interop.Core;
|
|
using Microsoft.Win32;
|
|
|
|
namespace Decal.Adapter;
|
|
|
|
[ComVisible(true)]
|
|
[ComDefaultInterface(typeof(IDecalService))]
|
|
[ClassInterface(ClassInterfaceType.None)]
|
|
[ProgId("DecalAdapter.Lifetime")]
|
|
[Guid("71A69713-6593-47EC-0001-0000000DECA1")]
|
|
public sealed class LifetimeProxy : MarshalByRefObject, IDecalService, IDecalDirectory, IDecalWindowsMessageSink
|
|
{
|
|
private CoreManager myLifetime;
|
|
|
|
public LifetimeProxy()
|
|
{
|
|
Util.WriteLine("Lifetime Proxy retrieving Lifetime manager");
|
|
myLifetime = CoreManager.Current;
|
|
Util.WriteLine("Lifetime Proxy ctor complete");
|
|
}
|
|
|
|
[ComRegisterFunction]
|
|
internal static void SelfRegister(Type t)
|
|
{
|
|
RegistryKey registryKey = Registry.LocalMachine.CreateSubKey("Software\\Decal\\Services").CreateSubKey("{71A69713-6593-47EC-0001-0000000DECA1}");
|
|
registryKey.SetValue("", "Decal .NET Lifetime Service", RegistryValueKind.String);
|
|
registryKey.SetValue("Enabled", true, RegistryValueKind.DWord);
|
|
RegistryKey registryKey2 = Registry.LocalMachine.CreateSubKey("Software\\Decal\\Surrogates").CreateSubKey("{71A69713-6593-47EC-0002-0000000DECA1}");
|
|
registryKey2.SetValue("", "Decal.Adapter Surrogate", RegistryValueKind.String);
|
|
registryKey2.SetValue("Enabled", true, RegistryValueKind.DWord);
|
|
}
|
|
|
|
[ComUnregisterFunction]
|
|
internal static void UnRegister(Type t)
|
|
{
|
|
}
|
|
|
|
void IDecalService.AfterPlugins()
|
|
{
|
|
}
|
|
|
|
void IDecalService.BeforePlugins()
|
|
{
|
|
}
|
|
|
|
void IDecalService.Initialize(DecalCore pDecal)
|
|
{
|
|
if (!RuntimePolicyHelper.LegacyV2RuntimeEnabledSuccessfully)
|
|
{
|
|
Util.WriteLine("Can't load v2 mixed-mode");
|
|
}
|
|
myLifetime.Initialize(pDecal);
|
|
}
|
|
|
|
void IDecalService.Terminate()
|
|
{
|
|
myLifetime.Terminate();
|
|
}
|
|
|
|
object IDecalDirectory.Lookup(string strName)
|
|
{
|
|
return null;
|
|
}
|
|
|
|
bool IDecalWindowsMessageSink.WindowMessage(int HWND, short uMsg, int wParam, int lParam)
|
|
{
|
|
return myLifetime.FireWindowMessage(HWND, uMsg, wParam, lParam);
|
|
}
|
|
}
|