请问高手们,actvex控件不能调用win32api

时间:2022-05-16 18:11:59
请问弟兄们,自己写了个activex控件,需要用到win32api函数,执行时出现以下错误,请问用何方法可以使activex控件执行win32api函数(c#非托管函数)

安全透明方法“AutoVue.测试.button1_Click(System.Object, System.EventArgs)”尝试通过方法“AutoVue.测试.FindWindowA(System.String, System.String)”调用本机代码失败。方法必须是安全关键的或安全可靠关键的,才能调用本机代码。

11 个解决方案

#1


权限,数字签名

#2


谢谢回复,这个控件用了好久了,最近加了个方法,就是调用win32函数的功能,现在使用到win32api函数时才错误,没调用win32api时都可以哦,是不是买个数字签名就可以啊,

#3


大家有做过activex调用win32api的吗

#4


在配置文件中指定NetFx40_LegacySecurityPolicy


http://msdn.microsoft.com/en-us/library/dd409253(VS.100).aspx

#5


谢谢,我先测试下,可以了再联系感谢您

#6


引用 4 楼  的回复:
在配置文件中指定NetFx40_LegacySecurityPolicy


http://msdn.microsoft.com/en-us/library/dd409253(VS.100).aspx

先谢了,我先测试看看

#7


小喵,您好,配置文件加上了以下代码,但还是一样的错误,还有其他需要设置的吗?
    <runtime>
      <NetFx40_LegacySecurityPolicy enabled="true"/>
    </runtime>

#8


请问楼主,问题解决 没,解决了希望能和我分享下,
我也遇到相同问题, http://bbs.csdn.net/topics/390335511
QQ:364027545 

#9


在控件的AssemblyInfo.cs文件中添加一行:
[assembly: SecurityRules(SecurityRuleSet.Level1)]
重新编译注册,试试行不

#10


引用 9 楼 najunuoyan 的回复:
在控件的AssemblyInfo.cs文件中添加一行:
[assembly: SecurityRules(SecurityRuleSet.Level1)]
重新编译注册,试试行不

这个方法是可以的,楼主可以试试

#11


[assembly: SecurityRules(SecurityRuleSet.Level1)] 经测试 可行

#1


权限,数字签名

#2


谢谢回复,这个控件用了好久了,最近加了个方法,就是调用win32函数的功能,现在使用到win32api函数时才错误,没调用win32api时都可以哦,是不是买个数字签名就可以啊,

#3


大家有做过activex调用win32api的吗

#4


在配置文件中指定NetFx40_LegacySecurityPolicy


http://msdn.microsoft.com/en-us/library/dd409253(VS.100).aspx

#5


谢谢,我先测试下,可以了再联系感谢您

#6


引用 4 楼  的回复:
在配置文件中指定NetFx40_LegacySecurityPolicy


http://msdn.microsoft.com/en-us/library/dd409253(VS.100).aspx

先谢了,我先测试看看

#7


小喵,您好,配置文件加上了以下代码,但还是一样的错误,还有其他需要设置的吗?
    <runtime>
      <NetFx40_LegacySecurityPolicy enabled="true"/>
    </runtime>

#8


请问楼主,问题解决 没,解决了希望能和我分享下,
我也遇到相同问题, http://bbs.csdn.net/topics/390335511
QQ:364027545 

#9


在控件的AssemblyInfo.cs文件中添加一行:
[assembly: SecurityRules(SecurityRuleSet.Level1)]
重新编译注册,试试行不

#10


引用 9 楼 najunuoyan 的回复:
在控件的AssemblyInfo.cs文件中添加一行:
[assembly: SecurityRules(SecurityRuleSet.Level1)]
重新编译注册,试试行不

这个方法是可以的,楼主可以试试

#11


[assembly: SecurityRules(SecurityRuleSet.Level1)] 经测试 可行