Visual Studio 2015 - Windows XP (v140_xp) 编译工具 ucrtbased.dll缺失

先写结论,最好不要使用VS2015-WinXP编译工具来编译VC++程序,因为你最终会发现,编译出来的程序如果是动态链接到运行库的话,即便你已经拷贝了所有需要的运行库dll,当在xp系统上运行时,还是会提示缺少ucrtbased.dll(Debug版)或者ucrtbase.dll(Release版)。

解决办法有两个:

1.静态链接到运行时库  (MT 或者 MTd)    如果使用了MFC,还要静态链接到MFC

2.安装VS2013  直接用VS2013-WinXP来编译,编译出的程序只要附带上运行库dll即可直接在XP上运行

下面记录一下自己使用Visual Studio 2015 - Windows XP (v140_xp) 碰到的坑:

开始时,使用的VS2015 SP1,platform toolset选择的Visual Studio 2015 - Windows XP (v140_xp) ,编译出来debug版的程序,是动态连接到MFC和CRT的,我把所有需要的vc runtime dlls都拷贝到了xp虚拟机里面,但是发现程序无法运行,弹出无法找到ucrtbased.dll,于是google开始找解决办法,微软的官方说法是 VS2015修改了CRT runtime,增加了ucrtbase.dll这么个组件,这个组件必须得操作系统安装一个补丁才能有,直接把文件拷贝过去是不行的。但是XP没有这个补丁,最低是WIN7。

然后从VS2015SP2开始,微软修复了这个问题,XP也可以安装ucrtbase.dll这个组件了,方法就是必须安装VS2015的vcredist_x86.exe,这个文件的路径在D:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\redist\1033下面,于是我开始更新我的VS2015,下载了SP3的更新包(下载链接),更新完毕花了将近4个小时。

然后我用VS2015SP3重新编译了release版的程序,并且在我xp的虚拟机里面安装了SP3版本的vcredist_x86.exe,程序可以运行了。

但是还是有如下问题:

1.编译出来的debug版的程序仍然无法在xp上运行,因为缺少ucrtbased.dll,我也没有找到debug版的vcredist_x86.exe

2.我的程序没有安装包,我不想用户在使用的时候还必须得安装一个vcredist_x86.exe,那跟使用C#程序之前必须安装一个.net framework有什么区别?

最后我决定使用VS2013-Windows XP 来编译我的程序,因为我电脑上之前装有VS2013,后来装的VS2015,所以工程-属性里面可以直接选择VS2013的platform toolset。这样的话就可以使用VS2015的IDE来写代码,使用VS2013的编译器来编译生成程序。

而且我可以确定的说,VS2013-Windows XP编译出来的无论是debug版还是release版,32位或者64位,只需将对应的VC Runtime dll拷贝到程序目录下,就可以直接在XP上运行,方便调试和使用。

至于说如何为VS2015安装VS2013的平台工具集(platform toolset),老老实实再装一个VS2013吧,装完之后,VS2015里面会自动识别出来的。简单的办法我用google也没有找到,如果谁找到了,评论里面留言下,多谢~。毕竟再装一个VS2013是要花很多时间和精力的~~

 

转载:http://blog.csdn.net/atceedsun/article/details/53583824

安装Win10后Windows找不到恢复环境解决方法 - 修复WinRE恢复环境

打开“命令提示符(管理员)”。输入reagentc /info命令,回车即可查看恢复环境配置信息,如果电脑配置了恢复环境,在Windows RE位置后面是可以看到WinRE映像存放位置的。对于已配置恢复环境但未能正常加载,一般只需要先将其禁用再启用即可解决,禁用命令reagentc /disable回车,启用命令reagentc /enable回车。

如果运行reagentc /info后,Windows RE位置显示为空,这说明恢复环境已丢失,此时当我们运行reagentc /enable启用恢复环境的时候就会出现未找到Windows RE映像的提示。这个时候就需要自己重新配置一下Windows恢复环境(WinRE)了,具体方法如下:

1、创建恢复环境映像目录:在系统盘根目录新建名为Recovery的文件夹,然后再在Recovery文件夹内新建名为WindowsRE的文件夹。完整路径即为C:\Recovery\WindowsRE。

2、从微软原版ISO镜像中获取WinRE.wim映像:WinRE.wim映像位于原版ISO镜像的install.wim中,可以使用7z文件压缩工具直接从install.wim中提取而不必“解压”install.wim。

具体方法:安装7z工具,打开微软原版ISO镜像,再打开其中的sources目录,用7z工具打开install.wim文件,然后再定位到windows/system32/recovery目录,这里就可以看到所需要的WinRE.wim映像了,选中winre.wim文件,点击上方的“解压到”,出现对话框,将路径更改为C:\Recovery\WindowsRE,点击“确定”开始复制。复制完成后确认一下C:\Recovery\WindowsRE目录中已存在winre.wim文件,WinRE.wim为隐藏文件。提取后需要显示隐藏文件才能在C:\Recovery\WindowsRE中看到它。

3、将获取的WinRE.wim配置为系统默认恢复环境启动映像:打开“命令提示符(管理员)”,输入下面的命令reagentc /setreimage /path C:\Recovery\WindowsRE回车运行即可,设置成功后,还需将其开启,开启命令reagentc /enable现在恢复环境就已经配置成功了。

Q:win 10系统不能打开Recovery文件夹,提示拒绝咋办呢?
A:右键-属性-权限,把所有者设成你、替换子容器的权限、完全控制

CentOS上安装ShadowSocks服务端

1、查看系统
[root@localhost ~]# cat /etc/issue
CentOS release 6.6 (Final)
[root@localhost ~]# uname -a
Linux localhost.localdomain 2.6.32-042stab106.6 #1 SMP Mon Apr 20 14:48:47 MSK 2015 x86_64 x86_64 x86_64 GNU/Linux

2、安装ShadowSocks
# yum install python-setuptools && easy_install pip
# pip install shadowsocks

3、创建配置文件/etc/shadowsocks.json
[root@localhost /]# touch /etc/shadowsocks.json
[root@localhost /]# vi /etc/shadowsocks.json
//单用户配置
{
"server":"***.***.***.***",
"server_port":8388,
"local_address": "127.0.0.1",
"local_port":1080,
"password":"MyPass",
"timeout":600,
"method":"rc4-md5"
}
//多用户的配置
{
"server":"***.***.***.***",
"port_password":{
"9001":"pwd001",
"9002":"pwd002",
"9003":"pwd003"
},
"local_address":"127.0.0.1",
"local_port":1080,
"timeout":300,
"method":"rc4-md5"
}

备注:加密方式官方默认使用aes-256-cfb,推荐使用rc4-md5,因为 RC4比AES速度快好几倍。
各字段说明:

server:服务器的IP,VPS的公网IP,注意这也将是服务端监听的IP地址
server_port:服务器端口
local_port:本地端端口
password:用来加密的密码
timeout:超时时间(秒)
method:加密方式。可选择 “bf-cfb”, “aes-256-cfb”, “des-cfb”, “rc4″, 等等。默认是一种不安全的加密,推荐用 “aes-256-cfb”。
Tips:加密方式推荐使用rc4-md5,因为 RC4 比 AES 速度快好几倍,如果用在路由器上会带来显著性能提升。旧的 RC4 加密之所以不安全是因为 Shadowsocks 在每个连接上重复使用 key,没有使用 IV。现在已经重新正确实现,可以放心使用。

4、使用配置文件在后台运行shadowsocks服务
[root@localhost /]# ssserver -c /etc/shadowsocks.json -d start

备注:若无配置文件,在后台可以使用一下命令运行:
[root@localhost /]# ssserver -p 443 -k MyPass -m rc4-md5 -d start

5、停止服务
[root@localhost /]# ssserver -c /etc/shadowsocks.json -d stop

6、配置开机自启动
编辑 /etc/rc.local 文件
sudo vim /etc/rc.local
在exit 0 这一行的上边加入如下
/usr/local/bin/ssserver –c /etc/shadowsocks.json