.NET 2.0 检测
#include <stdlib.h>
#include<windows.h>
char GetSystemDisk(){
char str[255];
GetSystemDirectory(str, 255);
return str[0];
}
char* merge(char *s1,char *s2,char* des){
int length1=strlen(s1);
int length2=strlen(s2);
int sumLength=length1+length2;
des=(char *)malloc(sizeof(char)*sumLength+1);
int i=0;
for(;i<sumLength;i++){
if(i<=length1-1)
des[i]=s1[i];
else
des[i]=s2[i-length1];
}
des[i]='\0';
return des;
}
void strrpl(char* pDstOut, char* pSrcIn, const char* pSrcRpl, const char* pDstRpl)
{
char* pi = pSrcIn;
char* po = pDstOut;
int nSrcRplLen = strlen(pSrcRpl);
int nDstRplLen = strlen(pDstRpl);
char *p = NULL;
int nLen = 0;
do
{
// 找到下一个替换点
p = strstr(pi, pSrcRpl);
if(p != NULL)
{
// 拷贝上一个替换点和下一个替换点中间的字符串
nLen = p - pi;
memcpy(po, pi, nLen);
// 拷贝需要替换的字符串
memcpy(po + nLen, pDstRpl, nDstRplLen);
}
else
{
strcpy(po, pi);
// 如果没有需要拷贝的字符串,说明循环应该结束
break;
}
pi = p + nSrcRplLen;
po = po + nLen + nDstRplLen;
} while (p != NULL);
}
void contact(char str1[],char str2[])
{
char *p1,*p2;
int length1 = 0,length2 = 0;
int i;
p1 = str1;
p2 = str2;
while(*p1)
{
p1++;
length1++;
}
while(*p2)
{
p2++;
length2++;
}
for(i = 0;i < length1;i++)
str2[length2+i] = str1[i];
str2[length1+length2] = '\0';
}
int file_exists(char *filename)
{
return (access(filename, 0) == 0);
}
int main()
{
char c=GetSystemDisk();
char order[255]="C:\\WINDOWS\\Microsoft.NET\\Framework\\v2.0.50727\\regasm.exe /codebase /tlb";
char path[255]="C:\\WINDOWS\\Microsoft.NET\\Framework\\v2.0.50727\\regasm.exe";
order[0]=c;
int existFile=file_exists(path);
char result[400];
char szFull[400];
GetModuleFileName(NULL,szFull,400);
if(existFile!=1){
printf("安装.NET运行时,请等待....\n");
char result2[400];
strrpl(result2,szFull,"patentstart.exe","2.0.exe");
system(result2);
}
//启动路径
strrpl(result,szFull,"patentstart.exe","PatentActiveX.dll");
printf("%s\n",result);
int resultLength=strlen(result);
//
char dllPath[500];
dllPath[0]='"';
int j=1;
for(;j<=resultLength;j++){
dllPath[j]=result[j-1];
}
dllPath[j]='"';
dllPath[j+1]='\0';
printf("%s\n",dllPath);
//
char fullOrder[900];
int orderLength=strlen(order);
int dllPathLength=strlen(dllPath);
int i=0;
for(;i<orderLength;i++){
fullOrder[i]=order[i];
}
fullOrder[orderLength]=' ';
for(i=orderLength+1;i<=orderLength+dllPathLength+1;i++){
fullOrder[i]=dllPath[i-orderLength-1];
}
printf("%s\n",fullOrder);
system(fullOrder);
//system("cls");
printf("注册成功,刷新IE页面有效\n");
MessageBox(NULL,"注册成功,刷新IE页面有效","提示",MB_OK);
return 0;
}
.NET 2.0 检测的更多相关文章
- 解决:Android 8.0检测不到当前的activity
前两天从Android 7.0升级到Android 8.0,今天在用 adb shell dumpsys activity | findstr "mFocusedActivity" ...
- HTTP 错误 500.23 - Internal Server Error 检测到在集成的托管管道模式下不适用的 ASP.NET 设置。
检测到在集成的托管管道模式下不适用的ASP.NET设置的解决方法(非简单设置为[经典]模式). - CatcherX 2014-03-11 11:03 27628人阅读 评论(2) 收藏 举报 分类 ...
- 检测访问网页的浏览器呈现引擎、平台、Windows操作系统、移动设备和游戏系统
/** * Author: laixiangran. * Created by laixiangran on 2015/12/02. * 检测访问网页的浏览器呈现引擎.平台.Windows操作系统.移 ...
- PBOC2.0与PBOC3.0的区别
2013年2月,中国人民银行发布了<中国金融集成电路(IC)卡规范(V3.0)>(以下简称PBOC3.0),PBOC3.0是在中国人民银行2005年颁布的<中国金融集成电路(IC)卡 ...
- javascript关于检测浏览器和操作系统的问题
1.方法学: 最好是检测浏览器的最小版本,这样才不会当版本升级之后不断添加新的内容进去. 理想的方式: if(isMinIE5){ //code } 直接检查准确的版本的缺点: if(isMinIE5 ...
- YUI的UA检测
YUI.UA是针对javascript的宿主环境检测的一个检测对象,返回的是一系统关于当前宿主的信息 1.对象相关信息列表及userAgent 检测对象o = { ie: 0, //ie Mozill ...
- 基于Xcode8插件开发~一键检测处理头文件引用
Xcode8开放了新的一个Extension:Xcode Source Editor Extension,目的是让开发者可以正规的自主为IDE编写插件,虽然说系统现提供的功能还比较拮据,但是不妨碍我们 ...
- 用户代理字符串(navigator.userAgent)检测方法
最近在看<JavaScript 高级程序设计(第三版)>,发现其中关于用户代理字符串检测技术的一些方法,觉得讲的很详细.用户代理字符串(navigator.userAgent)中包含了大量 ...
- vue-cli3.0使用及配置
1.先全局安装vue-cli3.0 检测安装: vue -V 2.创建项目(这个就跟react创建脚手架项目比较像了) 这里如果你是第一次用3.0版本的话,是没有前两个的,而只有最后两个,这里是 ...
随机推荐
- [Xamarin] 從Xamarin中呼叫 *.jar 的 library - 呼叫篇 (转帖)
上篇文章我們建立一個很簡單的Library : com.example.blackfactory.UtilFunc 現在我們要在Xamarin 中呼叫囉! 首先我們要先成立一個橋接的專案 JARBri ...
- JQuery图片轮播滚动效果(网页效果--每日一更)
今天,带来的是一个图片的轮播滚动效果! 先来看一下效果展示:亲,请点击这里 原理很简单,设置一个定时器,使图片列表在每隔一段时间后滚动一次.而循环效果,就是在每一滚动的时候,将第一张图片放到最后一张的 ...
- Spring RabbitMq概述
Spring AMQP consists of a handful of modules, each represented by a JAR in the distribution. These m ...
- 好用的SQL TVP~~独家赠送[增-删-改-查]的例子
以前总是追求新东西,发现基础才是最重要的,今年主要的目标是精通SQL查询和SQL性能优化. 本系列主要是针对T-SQL的总结. [T-SQL基础]01.单表查询-几道sql查询题 [T-SQL基础] ...
- 一个App完成入门篇(五)- 完成新闻页面
本节教程将介绍如何用DeviceOne简单而高效的完成一个新闻页面. 导入项目 数据模板分离MVVM模型 自定义事件 展示新闻 九宫格展示 将要学习的demo效果图如下所示 1. 导入完整项目 本节示 ...
- 【月末轻松篇】--- 那些奇葩的Bugs
不能说所有的bug都是纸老虎,但往往那种看似很奇葩的bug,导致的原因确实很简单,烦了你一段时间,找到真相又让你忍不住一笑.什么是奇葩的bug呢.我的定义是:代码逻辑都一样,但在A处是好的,到了B处就 ...
- C# Lambda表达式详解,及Lambda表达式树的创建
最近由于项目需要,刚刚学完了Action委托和Func<T>委托,发现学完了委托就必须学习lambda表达式,委托和Lambda表达式联合起来,才能充分的体现委托的便利.才能使代码更加简介 ...
- [ZigBee] 7、ZigBee之UART剖析(ONLY串口发送)
综述:USART0和USART1是串行通信接口,它们能够分别运行于异步UART模式或者同步SPI 模式.两个USART具有同样的功能,可以设置在单独的I/O 引脚. 1.UART 模式 UART 模式 ...
- Android手动签名
在生成release build时可实现自动签名,所谓手动签名,就是在命令行下完成签名,落实到Android Studio里面,就是在terminal里面做. 下面是三个命令,第一个签名,第二个验证, ...
- 值得使用的Spring Boot
2013年12月12日,Spring发布了4.0版本.这个本来只是作为Java平台上的控制反转容器的库,经过将近10年的发展已经成为了一个巨无霸产品.不过其依靠良好的分层设计,每个功能模块都能保持较好 ...