当前位置:首页 > PHP > 正文内容

编写php com组件,php调用.net dll,php源码保护

高老师6年前 (2018-10-03)PHP2069

开发com组件可以用c++,vc++,net,我比较熟悉net,演示用dnet

(1).创建项目:启动vs2017,新建项目,选择Visual C# ->Windows桌面->类库通用windows

QQ图片20181003120534.png

(2). 修改Com项目:点击 项目->项目属性,再点击应用程序->程序集信息,勾选使程序集COM可见,并保存

22.png

(3).创建强命名签名文件:使用vs2017的开发人员命令提示符,执行以下命令,将签名文件生成到D盘根目录(建议以管理员身份运行):

 sn -k D:\ThinkShop.snk

QQ图片20181003122034.jpg

shen.png

(4).使用签名文件:点击 项目->项目属性,再点签名->勾选为程序签名->选择在D盘创建的签名文件

22.jpg

(5).编写代码:编写玩组件方法,编译生成dll文件

namespace ThinkShop
{
    public class App
    {
        //校验客户软件是否正版 
        private bool isAuthorize()
        {
            string ip = "127.0.0.1"; 
            if (ip != "127.0.0.1")
            {
                return false;
            }
            else
            {
                return true;
            }   
        }

        //获取网站标题设置
        public string GetWebsiteTitle()
        {
            bool isAuthorize = this.isAuthorize();
            if (isAuthorize)
            {
                return "This is website title!";
            }
            else
            {
                return "Please support authentic edition!";
            }
        }
    }
}

(6.)dll类库转com组件:将dll转为com组件,使用vs2017的开发人员命令提示符以管理员方式运行,执行以下命令(要在dll目录下,)

regasm ThinkShop.dll

222.png

(7).将程序集添加到全局程序集缓存中:可以直接在第6步骤直接执行,加到这里方便阅读。执行以下命令

gacutil /I ThinkShop.dll

33333.png

(8).php调用com组件:(记得开启php.ini中的extension=php_com_dotnet.dll)

<?php  

$thinkShop=new Com("ThinkShop.App");

$title = $thinkShop->GetWebsiteTitle();

var_dump($title);

?>

php源码保护:

 可以将核心操作用com组件实现,然后加密dll,注册到程序集,再删除dll文件。

vs2019种需要标准的接口实现来写com,参考我的gitee项目代码,很快入手,上面的是基于vs2017的代码

gitee代码

扫描二维码推送至手机访问。

版权声明:本文由高久峰个人博客发布,如需转载请注明出处。

本文链接:https://blog.20230611.cn/post/66.html

分享给朋友:

“编写php com组件,php调用.net dll,php源码保护” 的相关文章

PHP使用fsockopen抓取网页,自定义请求头

PHP使用fsockopen抓取网页,自定义请求头

通过该函数可以获取指定端口的页面源码,还能设置超时时间、自定义数据包,fsockopen 也很强大,但是比较偏底层。可以自定义设置header头信息,强大至极。$socket=fsockopen('www.jd88.net','80',$errno,$errstr,3...

PHP生成cookie数组,PHP删除cookie数组

PHP生成cookie数组,PHP删除cookie数组

<?php   //设置Cookies数组 setcookie('Datatype[a]', '1');  setcookie('Datatype[b]', '2');  set...

php无限查询下级,php递归统计下级总数,php 获取无限子级

php无限查询下级,php递归统计下级总数,php 获取无限子级

因项目需要需要统计用户无限下级计算分销佣金,计算每月分红,计算无限下级团队的业绩,需要先获得某个会员的无限下级成员。先看看数据库中的member表字段id            username       &...

抛弃salt,使用password_hash()加密

抛弃salt,使用password_hash()加密

md5/sha1+salt方式是目前各大cms常用的加密方式,虽然salt安全,但是各大md5网站也在研究这个方向,那么我们应该选择password_hash动态hash来助力,一种密码有多种hash结果.看代码模拟登陆.<?php //01.注册 $user ='zhang...

php异步执行,php后台运行,如何在windows下让php后台运行

php异步执行,php后台运行,如何在windows下让php后台运行

如果想在windows中执行php,并且让php脚本在后台运行,可以用下面的cmd命令start /b php  D:\wwwroot\default\demo1\run.php例如上面的命令意思后台运行run.php,如果想用php编写异步代码: ...

Thinkphp Call Stack,PHP调用栈Call Stack的获取

Thinkphp Call Stack,PHP调用栈Call Stack的获取

ThinkPHP中有一个debug调试功能,能输出报错文件的信息,并能看到这个函数被哪些函数调用,从框架的启动开始记录,特别方便调试。于是研究了下它的底层给予了实现。<?php //--框架核心--Start //框架内置错误处理 function errDealWith($er...