Hello,
I have to implement Authenticode certyficate for my ActiveX control written in C# (WPF).
My ActiveX control works fine, but IE always shows a security bar, user has to click "Allow" each time he runs the control - This is the reason, why we have dicded to buy Authenticode Certyficate. We have received a certyficate and private key, but after signing the control (signing process end correctly) it is still not "safe" for IE.
I have found information, that I have to implement IObjectSafety interface, but it also does not made any change. I will post You code fragments:
I am not generating a CAB file, just a DLL. I am signing that DLL with Authenticode, and next registering it by register.bat:
C:\WINDOWS\Micr osoft.NET\Frame work\v2.0.50727/regasm /tlb /codebase ActiveX_MyProgr am.dll
Hosting in HTML:
The control works with no problem, but still shows the security tab before loading. Any idea?
Thanks in advance.
I have to implement Authenticode certyficate for my ActiveX control written in C# (WPF).
My ActiveX control works fine, but IE always shows a security bar, user has to click "Allow" each time he runs the control - This is the reason, why we have dicded to buy Authenticode Certyficate. We have received a certyficate and private key, but after signing the control (signing process end correctly) it is still not "safe" for IE.
I have found information, that I have to implement IObjectSafety interface, but it also does not made any change. I will post You code fragments:
Code:
namespace ActiveX_MyProgram
{
[Guid("694D1820-04B6-4388-928F-FF858B95F880")]
public interface iMyProgram
{
//some code here, not important for my question
}
[Guid("68FD4E0D-D7BC-4cf6-BEB7-CFF950161A79")]
[InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]
public interface iMyProgramEvents
{
//some code here, not important for my question
}
[ComImport()]
[GuidAttribute("CB5BDC81-93C1-11CF-8F20-00805F2CD064")]
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface IObjectSafety
{
[PreserveSig]
int GetInterfaceSafetyOptions(ref Guid riid,
out int pdwSupportedOptions,
out int pdwEnabledOptions);
[PreserveSig()]
int SetInterfaceSafetyOptions(ref Guid riid,
int dwOptionSetMask,
int dwEnabledOptions);
}
[ProgId("ActiveX_MyProgram")]
[ClassInterface(ClassInterfaceType.None), ComSourceInterfaces(typeof(iMyProgramEvents))]
[Guid("6BAE3EB8-EBC9-11DE-A7A1-0A6F55F89593")]
[ComVisible(true)]
public partial class Acx : UserControl, iMyProgram, IObjectSafety
{
/* Some more implementation, that I have cutted out... */
#region IObjectSafety implementation
private const int INTERFACESAFE_FOR_UNTRUSTED_CALLER = 0x00000001;
private const int INTERFACESAFE_FOR_UNTRUSTED_DATA = 0x00000002;
private const int S_OK = 0;
int IObjectSafety.GetInterfaceSafetyOptions(ref Guid riid, out int pdwSupportedOptions, out int pdwEnabledOptions)
{
pdwSupportedOptions = INTERFACESAFE_FOR_UNTRUSTED_CALLER | INTERFACESAFE_FOR_UNTRUSTED_DATA;
pdwEnabledOptions = INTERFACESAFE_FOR_UNTRUSTED_CALLER | INTERFACESAFE_FOR_UNTRUSTED_DATA;
return S_OK; // return S_OK
}
int IObjectSafety.SetInterfaceSafetyOptions(ref Guid riid, int dwOptionSetMask, int dwEnabledOptions)
{
return S_OK; // return S_OK
}
#endregion
}
}
C:\WINDOWS\Micr osoft.NET\Frame work\v2.0.50727/regasm /tlb /codebase ActiveX_MyProgr am.dll
Hosting in HTML:
Code:
<html><br/>
<body color=white><br/>
<hr/> <br/>
<font face=arial size=1><br/>
<OBJECT id="ACX" name="ACX" classid="clsid:6BAE3EB8-EBC9-11DE-A7A1-0A6F55F89593" VIEWASTEXT codebase="ACX.cab" width=1900 height=1000></OBJECT><br/>
</font> <br/>
</body><br/>
</html>
Thanks in advance.