├── README.md ├── image ├── KMS激活office2019成功.png ├── going.png ├── install_0.png ├── install_1.png ├── success.png ├── uac_run.png └── uninstall.png ├── kms ├── kms-debian ├── kms-server-deploy.sh ├── mrxn_net_kms.cmd ├── mrxn_net_kms.zip ├── office-C2R-to-VOL ├── Convert-C2R.cmd ├── README.md ├── x64 │ ├── cleanospp.exe │ └── msvcr100.dll └── x86 │ ├── cleanospp.exe │ ├── keyOff.cmd │ └── msvcr100.dll └── office2010-2016转VOL.cmd /README.md: -------------------------------------------------------------------------------- 1 | # kms-server-deploy 2 | 3 | ## 一键搭建kms激活服务端和Windows客户端一键激活脚本 4 | 5 | ## 再此特别感谢KMS服务器程序的开发者Wind4 6 | 7 | ## vlmcsd Github主页:[https://github.com/Wind4/vlmcsd](https://github.com/Wind4/vlmcsd) 8 | 9 | ## 脚本的使用方法: 10 | 11 | ## 在你的服务器上,执行如下命令即可: 12 | 13 | ```shell 14 | wget --no-check-certificate https://raw.githubusercontent.com/Mr-xn/kms-server-deploy/master/kms-server-deploy.sh && bash kms-server-deploy.sh 15 | ``` 16 | 17 | ## 不会的,请看下面的我的截图操作就知道了 18 | 19 | ## Linux服务端安装卸载 20 | 21 | ### 安装 22 | 23 | ![install_0.png](./image/install_0.png) 24 | 25 | ![install_1.png](./image/install_1.png) 26 | 27 | ### 卸载 28 | 29 | ![uninstall.png](./image/uninstall.png) 30 | 31 | ## Windows上激活 32 | 33 | ### 下载(右键另存为---然后解压即可使用) [mrxn_net_kms.zip](https://raw.githubusercontent.com/Mr-xn/kms-server-deploy/master/mrxn_net_kms.zip) 34 | 35 | ### 下载后右键-以管理员身份运行 36 | ![uac_run.png](./image/uac_run.png) 37 | 38 | ### 激活中... 39 | ![going.png](./image/going.png) 40 | 41 | ### 成功激活 42 | ![success.png](./image/success.png) 43 | 44 | ### cmd(管理员权限)激活office2019专业增强版(VL版本) 45 | ![KMS激活office2019成功](./image/KMS激活office2019成功.png) 46 | 47 | > 更新: 48 | > 添加自启脚本,借鉴至秋水大佬. 49 | > PS:这个是从vlmcsd仓库拉取编译,安装的时候vlmcsd就是最新版本. 50 | > 在centos6/7 ubuntu 16 测试成功.如果有任何问题,欢迎提交issue或者是博客留言. 51 | > 52 | > update:mrxn_net_kms.cmd 的编码和换行为Windows下的CRLF,避免下载后打开闪退[issues【#3】](https://github.com/Mr-xn/kms-server-deploy/issues/3),请下载ZIP的压缩激活脚本再解压使用。 53 | 54 | -------------------------------------------------------------------------------- /image/KMS激活office2019成功.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mr-xn/kms-server-deploy/18e0fa83b9c34cc15d8b2cefdfa492f02245eb89/image/KMS激活office2019成功.png -------------------------------------------------------------------------------- /image/going.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mr-xn/kms-server-deploy/18e0fa83b9c34cc15d8b2cefdfa492f02245eb89/image/going.png -------------------------------------------------------------------------------- /image/install_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mr-xn/kms-server-deploy/18e0fa83b9c34cc15d8b2cefdfa492f02245eb89/image/install_0.png -------------------------------------------------------------------------------- /image/install_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mr-xn/kms-server-deploy/18e0fa83b9c34cc15d8b2cefdfa492f02245eb89/image/install_1.png -------------------------------------------------------------------------------- /image/success.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mr-xn/kms-server-deploy/18e0fa83b9c34cc15d8b2cefdfa492f02245eb89/image/success.png -------------------------------------------------------------------------------- /image/uac_run.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mr-xn/kms-server-deploy/18e0fa83b9c34cc15d8b2cefdfa492f02245eb89/image/uac_run.png -------------------------------------------------------------------------------- /image/uninstall.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mr-xn/kms-server-deploy/18e0fa83b9c34cc15d8b2cefdfa492f02245eb89/image/uninstall.png -------------------------------------------------------------------------------- /kms: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # chkconfig: 2345 90 10 3 | # description: A secure socks5 proxy, designed to protect your Internet traffic. 4 | 5 | ### BEGIN INIT INFO 6 | # Provides: KMS Emulator 7 | # Required-Start: $network $syslog 8 | # Required-Stop: $network 9 | # Default-Start: 2 3 4 5 10 | # Default-Stop: 0 1 6 11 | # Short-Description: Build yourself KMS Server 12 | # Description: Start or stop the KMS Server 13 | ### END INIT INFO 14 | 15 | # Author: Teddysun 16 | 17 | # Source function library 18 | . /etc/rc.d/init.d/functions 19 | 20 | # Check that networking is up. 21 | [ ${NETWORKING} ="yes" ] || exit 0 22 | 23 | NAME="KMS Server" 24 | DAEMON=/usr/local/kms/vlmcsd 25 | PID_DIR=/var/run 26 | PID_FILE=$PID_DIR/vlmcsd.pid 27 | LOG_DIR=/var/log 28 | LOG_FILE=$LOG_DIR/vlmcsd.log 29 | RET_VAL=0 30 | 31 | [ -x $DAEMON ] || exit 0 32 | 33 | if [ ! -d $PID_DIR ]; then 34 | mkdir -p $PID_DIR 35 | if [ $? -ne 0 ]; then 36 | echo "Creating PID directory $PID_DIR failed" 37 | exit 1 38 | fi 39 | fi 40 | 41 | if [ ! -d $LOG_DIR ]; then 42 | mkdir -p $LOG_DIR 43 | if [ $? -ne 0 ]; then 44 | echo "Creating LOG directory $LOG_DIR failed" 45 | exit 1 46 | fi 47 | fi 48 | 49 | check_running() { 50 | if [ -r $PID_FILE ]; then 51 | read PID < $PID_FILE 52 | if [ -d "/proc/$PID" ]; then 53 | return 0 54 | else 55 | rm -f $PID_FILE 56 | return 1 57 | fi 58 | else 59 | return 2 60 | fi 61 | } 62 | 63 | do_status() { 64 | check_running 65 | case $? in 66 | 0) 67 | echo "$NAME (pid $PID) is running..." 68 | ;; 69 | 1|2) 70 | echo "$NAME is stopped" 71 | RET_VAL=1 72 | ;; 73 | esac 74 | } 75 | 76 | do_start() { 77 | if check_running; then 78 | echo "$NAME (pid $PID) is already running..." 79 | return 0 80 | fi 81 | $DAEMON -p $PID_FILE -l $LOG_FILE 82 | sleep 0.3 83 | if check_running; then 84 | echo "Starting $NAME success" 85 | else 86 | echo "Starting $NAME failed" 87 | RET_VAL=1 88 | fi 89 | } 90 | 91 | do_stop() { 92 | if check_running; then 93 | kill -9 $PID 94 | rm -f $PID_FILE 95 | echo "Stopping $NAME success" 96 | else 97 | echo "$NAME is stopped" 98 | RET_VAL=1 99 | fi 100 | } 101 | 102 | do_restart() { 103 | do_stop 104 | do_start 105 | } 106 | 107 | case "$1" in 108 | start|stop|restart|status) 109 | do_$1 110 | ;; 111 | *) 112 | echo "Usage: $0 { start | stop | restart | status }" 113 | RET_VAL=1 114 | ;; 115 | esac 116 | 117 | exit $RET_VAL -------------------------------------------------------------------------------- /kms-debian: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | ### BEGIN INIT INFO 4 | # Provides: KMS Emulator 5 | # Required-Start: $network $local_fs $remote_fs 6 | # Required-Stop: $network $local_fs $remote_fs 7 | # Default-Start: 2 3 4 5 8 | # Default-Stop: 0 1 6 9 | # Short-Description: Build yourself KMS Server 10 | # Description: Start or stop the KMS Server 11 | ### END INIT INFO 12 | 13 | # Author: Teddysun 14 | 15 | NAME="KMS Server" 16 | DAEMON=/usr/local/kms/vlmcsd 17 | PID_DIR=/var/run 18 | PID_FILE=$PID_DIR/vlmcsd.pid 19 | LOG_DIR=/var/log 20 | LOG_FILE=$LOG_DIR/vlmcsd.log 21 | RET_VAL=0 22 | 23 | [ -x $DAEMON ] || exit 0 24 | 25 | if [ ! -d $PID_DIR ]; then 26 | mkdir -p $PID_DIR 27 | if [ $? -ne 0 ]; then 28 | echo "Creating PID directory $PID_DIR failed" 29 | exit 1 30 | fi 31 | fi 32 | 33 | if [ ! -d $LOG_DIR ]; then 34 | mkdir -p $LOG_DIR 35 | if [ $? -ne 0 ]; then 36 | echo "Creating LOG directory $LOG_DIR failed" 37 | exit 1 38 | fi 39 | fi 40 | 41 | check_running() { 42 | if [ -r $PID_FILE ]; then 43 | read PID < $PID_FILE 44 | if [ -d "/proc/$PID" ]; then 45 | return 0 46 | else 47 | rm -f $PID_FILE 48 | return 1 49 | fi 50 | else 51 | return 2 52 | fi 53 | } 54 | 55 | do_status() { 56 | check_running 57 | case $? in 58 | 0) 59 | echo "$NAME (pid $PID) is running..." 60 | ;; 61 | 1|2) 62 | echo "$NAME is stopped" 63 | RET_VAL=1 64 | ;; 65 | esac 66 | } 67 | 68 | do_start() { 69 | if check_running; then 70 | echo "$NAME (pid $PID) is already running..." 71 | return 0 72 | fi 73 | $DAEMON -p $PID_FILE -l $LOG_FILE 74 | sleep 0.3 75 | if check_running; then 76 | echo "Starting $NAME success" 77 | else 78 | echo "Starting $NAME failed" 79 | RET_VAL=1 80 | fi 81 | } 82 | 83 | do_stop() { 84 | if check_running; then 85 | kill -9 $PID 86 | rm -f $PID_FILE 87 | echo "Stopping $NAME success" 88 | else 89 | echo "$NAME is stopped" 90 | RET_VAL=1 91 | fi 92 | } 93 | 94 | do_restart() { 95 | do_stop 96 | do_start 97 | } 98 | 99 | case "$1" in 100 | start|stop|restart|status) 101 | do_$1 102 | ;; 103 | *) 104 | echo "Usage: $0 { start | stop | restart | status }" 105 | RET_VAL=1 106 | ;; 107 | esac 108 | 109 | exit $RET_VAL 110 | -------------------------------------------------------------------------------- /kms-server-deploy.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # 开机自启脚本来自秋水大佬,感谢! 3 | PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin 4 | export PATH 5 | 6 | echo "#=============================================================================" 7 | echo "# System Required: CentOS 6+/Debian 6+/Ubuntu 14.04+" 8 | echo "# Description: deploy the vlmcsd server(windows系列的VL版本KMS激活服务端一键搭建)" 9 | echo "# Version: 2.0.0" 10 | echo "# Author:Mrxn" 11 | echo "# Date:05/10/2019" 12 | echo "# Blog:https://mrxn.net" 13 | echo "# kms_server:kms.mrxn.net" 14 | echo "#=============================================================================" 15 | 16 | Green_font_prefix="\033[32m" && Red_font_prefix="\033[31m" && Green_background_prefix="\033[42;37m" && Red_background_prefix="\033[41;37m" && Font_color_suffix="\033[0m" 17 | Info="${Green_font_prefix}[信息]${Font_color_suffix}" 18 | Error="${Red_font_prefix}[错误]${Font_color_suffix}" 19 | Tip="${Green_font_prefix}[注意]${Font_color_suffix}" 20 | 21 | # 检查系统是否符合&是否已经安装vlmcsd服务 22 | check_root() { 23 | [[ $EUID != 0 ]] && echo -e "${Error} 当前账号非ROOT(或没有ROOT权限),无法继续操作,请使用${Green_background_prefix} sudo su ${Font_color_suffix}来获取临时ROOT权限(执行后会提示输入当前账号的密码)。" && exit 1 24 | } 25 | check_pid() { 26 | PID=$(ps -ef | grep -v grep | grep vlmcsd | awk '{print $2}') 27 | if [ ! -z $PID ]; then 28 | STAT=0 29 | else 30 | STAT=1 31 | fi 32 | } 33 | check_vlmcsd_start() { 34 | check_pid 35 | [[ ! -z ${PID} ]] && echo -e "${Error} vlmcsd正在运行,退出安装程序!" && exit 1 36 | } 37 | check_vlmcsd_stop() { 38 | check_pid 39 | [[ -z ${PID} ]] && echo -e "${Tip} 未发现vlmcsd服务,准备安装!" 40 | } 41 | check_vlmcsd_status() { 42 | check_DAMON_status 43 | check_pid 44 | if [ $STAT = 0 ]; then 45 | echo -e "${Info} vlmcsd正在运行,放心玩去吧!" && exit 1 46 | elif [ $STAT = 1 ]; then 47 | echo -e "${Tip} 未发现vlmcsd服务,请尝试重启vlmcsd服务端或者是安装vlmcsd服务端" 48 | fi 49 | } 50 | check_sys() { 51 | if [[ -f /etc/redhat-release ]]; then 52 | release="centos" 53 | elif cat /etc/issue | grep -q -E -i "debian"; then 54 | release="debian" 55 | elif cat /etc/issue | grep -q -E -i "ubuntu"; then 56 | release="ubuntu" 57 | elif cat /etc/issue | grep -q -E -i "centos|red hat|redhat"; then 58 | release="centos" 59 | elif cat /proc/version | grep -q -E -i "debian"; then 60 | release="debian" 61 | elif cat /proc/version | grep -q -E -i "ubuntu"; then 62 | release="ubuntu" 63 | elif cat /proc/version | grep -q -E -i "centos|red hat|redhat"; then 64 | release="centos" 65 | else 66 | release="" 67 | fi 68 | bit=$(uname -m) 69 | } 70 | check_root 71 | check_sys 72 | [[ ${release} != "debian" ]] && [[ ${release} != "ubuntu" ]] && [[ ${release} != "centos" ]] && echo -e "${Error} 本脚本不支持当前系统 ${release} !" && exit 1 73 | # Get version 74 | getversion(){ 75 | if [[ -s /etc/redhat-release ]]; then 76 | grep -oE "[0-9.]+" /etc/redhat-release 77 | else 78 | grep -oE "[0-9.]+" /etc/issue 79 | fi 80 | } 81 | 82 | # CentOS version 83 | centosversion(){ 84 | if [[ x"${release}" == x"centos" ]]; then 85 | local code=$1 86 | local version="$(getversion)" 87 | local main_ver=${version%%.*} 88 | if [ "$main_ver" == "$code" ]; then 89 | return 0 90 | else 91 | return 1 92 | fi 93 | else 94 | return 1 95 | fi 96 | } 97 | # 开始安装vlmcsd依赖 98 | install_depend() { 99 | if [[ ${release} == "centos" ]]; then 100 | yum install wget gcc git make nss curl libcurl -y 101 | elif [[ ${release} == "debian" ]] || [[ ${release} == "ubuntu" ]]; then 102 | apt-get install wget gcc git make libnss3 curl libcurl3-nss -y 103 | fi 104 | echo -e "${Info} 依赖安装完毕...开始安装vlmcsd主程序..." 105 | 106 | } 107 | check_install_status() { 108 | check_pid 109 | if [ $STAT = 0 ]; then 110 | echo -e "${Info} vlmcsd安装成功!" 111 | elif [ $STAT = 1 ]; then 112 | echo -e "${Error} vlmcsd安装失败!" 113 | fi 114 | } 115 | # 开机自启动 116 | auto_start() { 117 | if [[ x"${release}" == x"centos" ]]; then 118 | if ! wget --no-check-certificate -O /etc/init.d/kms https://raw.githubusercontent.com/Mr-xn/kms-server-deploy/master/kms; then 119 | echo -e "${Error} Failed to download KMS Server script." 120 | exit 1 121 | fi 122 | elif [[ x"${release}" == x"debian" || x"${release}" == x"ubuntu" ]]; then 123 | if ! wget --no-check-certificate -O /etc/init.d/kms https://raw.githubusercontent.com/Mr-xn/kms-server-deploy/master/kms-debian; then 124 | echo -e "${Error} Failed to download KMS Server script." 125 | exit 1 126 | fi 127 | else 128 | echo -e "${Error} OS is not be supported, please change to CentOS/Debian/Ubuntu and try again." 129 | exit 1 130 | fi 131 | } 132 | boot_start(){ 133 | if [[ x"${release}" == x"debian" || x"${release}" == x"ubuntu" ]]; then 134 | update-rc.d -f "${1}" defaults 135 | elif [[ x"${release}" == x"centos" ]]; then 136 | chkconfig --add "${1}" 137 | chkconfig "${1}" on 138 | fi 139 | } 140 | 141 | boot_stop(){ 142 | if [[ x"${release}" == x"debian" || x"${release}" == x"ubuntu" ]]; then 143 | update-rc.d -f "${1}" remove 144 | elif [[ x"${release}" == x"centos" ]]; then 145 | chkconfig "${1}" off 146 | chkconfig --del "${1}" 147 | fi 148 | } 149 | # 开始从Wind4的仓库克隆到本地安装 150 | backup_old_vlmcsd() { 151 | if [[ -f $DAEMON ]]; then 152 | echo -e "${Tip} 发现旧的vlmcsd文件,将自动备份到/root/vlmcsd目录!" 153 | mkdir /root/vlmcsd 154 | mv $DAEMON /root/vlmcsd/old_vlmcsd 155 | elif [[ ! -f $DAEMON ]]; then 156 | echo -e "${Tip} 文件不存在,即将安装!" 157 | fi 158 | } 159 | start_install() { 160 | [[ -f $DAEMON ]] && echo -e "${Info} vlmcsd已经安装..." && exit 1 161 | echo -e "${Info} 正在检查当前账号是否有执行权限部署操作..." 162 | echo -e "${Info} 正在检查是否已经安装vlmcsd..." 163 | echo -e "${Info} 恭喜,系统检查通过,检查是否安装vlmcsd服务端中..." 164 | check_vlmcsd_stop 165 | check_vlmcsd_start 166 | backup_old_vlmcsd 167 | echo -e "${Tip}${Red_font_prefix} 检查完毕,开始安装vlmcsd服务端...${Font_color_suffix}" 168 | echo -e "${Info} 依赖安装/检查中..." 169 | install_depend 170 | git clone https://github.com/Wind4/vlmcsd.git 171 | [ -d vlmcsd ] && cd vlmcsd || echo -e "${Error} Failed to git clone vlmcsd." 172 | make 173 | if [ $? -ne 0 ]; then 174 | echo -e "${Error} 编译KMS 服务端出错,请重试或者将出错信息提交到 https://github.com/Mr-xn/kms-server-deploy/issues." 175 | exit 1 176 | fi 177 | auto_start 178 | mkdir /usr/local/kms 179 | cp -p bin/vlmcsd /usr/local/kms/ 180 | chmod 755 /usr/local/kms/vlmcsd 181 | chmod 755 /etc/init.d/kms 182 | boot_start kms 183 | /etc/init.d/kms restart 184 | check_DAMON_status 185 | Add_iptables 186 | Save_iptables 187 | # vlmcsd_start 188 | check_install_status 189 | } 190 | check_install() { 191 | echo && stty erase '^H' && read -p "确认安装?[y/n]:" choice 192 | case $choice in 193 | "y") 194 | start_install 195 | ;; 196 | "n") 197 | exit 0 198 | ;; 199 | *) 200 | echo "Please enter y or n!" 201 | ;; 202 | esac 203 | } 204 | # 设置 防火墙规则 205 | Add_iptables() { 206 | if centosversion 7; then 207 | systemctl status firewalld > /dev/null 2>&1 208 | if [ $? -eq 0 ]; then 209 | firewall-cmd --permanent --zone=public --add-port=1688/tcp 210 | firewall-cmd --reload 211 | else 212 | echo -e "${Error} 不存在firewalld 或者firewalld 没有安装,请手动将 1688端口放行." 213 | fi 214 | elif centosversion 6 || ${release} == "debian" || ${release} == "ubuntu"; then 215 | /etc/init.d/iptables status > /dev/null 2>&1 216 | if [ $? -eq 0 ]; then 217 | iptables -L -n | grep -i 1688 > /dev/null 2>&1 218 | if [ $? -ne 0 ]; then 219 | iptables -I INPUT -m state --state NEW -m tcp -p tcp --dport 1688 -j ACCEPT 220 | /etc/init.d/iptables save 221 | /etc/init.d/iptables restart 222 | fi 223 | else 224 | echo -e "${Error} iptables 没有启动或没有安装,请手动将 1688端口放行." 225 | fi 226 | fi 227 | } 228 | Del_iptables() { 229 | if centosversion 6 || ${release} == "debian" || ${release} == "ubuntu"; then 230 | iptables -D INPUT -m state --state NEW -m tcp -p tcp --dport 1688 -j ACCEPT 231 | /etc/init.d/iptables save 232 | /etc/init.d/iptables restart 233 | elif centosversion 7; then 234 | firewall-cmd --zone=public --remove-port=1688/tcp --permanent 235 | firewall-cmd --reload 236 | fi 237 | } 238 | Save_iptables() { 239 | if centosversion 6 || ${release} == "debian" || ${release} == "ubuntu"; then 240 | /etc/init.d/iptables save 241 | /etc/init.d/iptables restart 242 | elif centosversion 7; then 243 | firewall-cmd --reload 244 | fi 245 | } 246 | 247 | DAEMON=/usr/local/kms/vlmcsd 248 | STAT=2 249 | check_DAMON_status() { 250 | [[ ! -f $DAEMON ]] && echo -e "${Error} 文件不存在,请安装!" && exit 1 251 | } 252 | vlmcsd_restart() { 253 | check_DAMON_status 254 | check_pid 255 | if [ $STAT = 0 ]; then 256 | echo -e "${Info} 重启vlmcsd服务端中..." 257 | kill $PID 258 | elif [ $STAT = 1 ]; then 259 | echo -e "${Info} vlmcsd服务端未启动,启动中..." 260 | fi 261 | # $DAEMON -L 0.0.0.0:1688 -l vlmcsd.log 262 | /etc/init.d/kms restart 263 | check_pid 264 | if [ $STAT = 0 ]; then 265 | echo -e "${Info} Succeeded." 266 | elif [ $STAT = 1 ]; then 267 | echo -e "${Info} Failed." 268 | fi 269 | } 270 | vlmcsd_stop() { 271 | check_DAMON_status 272 | check_pid 273 | if [ $STAT = 0 ]; then 274 | echo -e "${Info} 停止vlmcsd服务端..." 275 | kill $PID 276 | check_pid 277 | if [ $STAT = 0 ]; then 278 | echo -e "${Info} Failed." 279 | elif [ $STAT = 1 ]; then 280 | echo -e "${Info} Succeeded." 281 | fi 282 | elif [ $STAT = 1 ]; then 283 | echo -e "${Info} vlmcsd没有运行" 284 | fi 285 | } 286 | vlmcsd_start() { 287 | check_DAMON_status 288 | check_pid 289 | if [ $STAT = 0 ]; then 290 | echo -e "${Info} vlmcsd服务端已经运行." 291 | exit 0 292 | elif [ $STAT = 1 ]; then 293 | echo -e "${Info} vlmcsd服务端未启动,启动中..." 294 | # $DAEMON -L 0.0.0.0:1688 -l vlmcsd.log 295 | /etc/init.d/kms restart 296 | fi 297 | check_pid 298 | if [ $STAT = 0 ]; then 299 | echo -e "${Info} Succeeded." 300 | elif [ $STAT = 1 ]; then 301 | echo -e "${Info} Failed." 302 | fi 303 | } 304 | uninstall_vlmcsd() { 305 | echo -e "${Tip} 正在卸载vlmcsd服务端..." 306 | vlmcsd_stop 307 | rm -rf $DAEMON 308 | rm -f /etc/init.d/kms 309 | rm -f /var/log/vlmcsd.log 310 | echo -e "${Tip} 卸载vlmcsd服务端完毕..." 311 | Del_iptables 312 | Save_iptables 313 | echo -e "${Tip} 删除防火墙规则完毕..." 314 | } 315 | check_uninstall() { 316 | check_DAMON_status 317 | echo && stty erase '^H' && read -p "确认卸载?[y/n]:" choice 318 | case $choice in 319 | "y") 320 | uninstall_vlmcsd 321 | ;; 322 | "n") 323 | exit 0 324 | ;; 325 | *) 326 | echo -e "${Tip} 请输入[y]或者[n]!" 327 | ;; 328 | esac 329 | } 330 | echo -e " vlmcsd服务端 一键管理脚本 ${Red_font_prefix}Powered By Mrxn.Net${Font_color_suffix} 331 | 332 | ${Green_font_prefix}1.${Font_color_suffix} 安装vlmcsd服务端 333 | ${Green_font_prefix}2.${Font_color_suffix} 查看vlmcsd的状态 334 | ${Green_font_prefix}3.${Font_color_suffix} 启动vlmcsd服务端 335 | ${Green_font_prefix}4.${Font_color_suffix} 停止vlmcsd服务端 336 | ${Green_font_prefix}5.${Font_color_suffix} 重启vlmcsd服务端 337 | ${Green_font_prefix}6.${Font_color_suffix} 卸载vlmcsd服务端 338 | " 339 | 340 | echo && stty erase '^H' && read -p "请输入数字 [1-6]:" num 341 | case "$num" in 342 | 1) 343 | start_install 344 | ;; 345 | 2) 346 | check_vlmcsd_status 347 | ;; 348 | 3) 349 | vlmcsd_start 350 | ;; 351 | 4) 352 | vlmcsd_stop 353 | ;; 354 | 5) 355 | vlmcsd_restart 356 | ;; 357 | 6) 358 | check_uninstall 359 | ;; 360 | *) 361 | echo -e "${Error} 请输入正确的数字 [1-6]" 362 | ;; 363 | esac 364 | -------------------------------------------------------------------------------- /mrxn_net_kms.cmd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mr-xn/kms-server-deploy/18e0fa83b9c34cc15d8b2cefdfa492f02245eb89/mrxn_net_kms.cmd -------------------------------------------------------------------------------- /mrxn_net_kms.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mr-xn/kms-server-deploy/18e0fa83b9c34cc15d8b2cefdfa492f02245eb89/mrxn_net_kms.zip -------------------------------------------------------------------------------- /office-C2R-to-VOL/Convert-C2R.cmd: -------------------------------------------------------------------------------- 1 | @echo off 2 | :: Licenses used for converting Office 365 ProPlus: 3 | :: set _O365asO2019=0 -> use Office 2016 Mondo (if you want some Office 365 features) 4 | :: set _O365asO2019=1 -> use Office 2019 ProPlus (should only be used for Windows 7 and 8.1) 5 | set _O365asO2019=0 6 | 7 | 8 | set _Debug=0 9 | set "SysPath=%Windir%\System32" 10 | if exist "%Windir%\Sysnative\reg.exe" (set "SysPath=%Windir%\Sysnative") 11 | set "Path=%SysPath%;%Windir%;%SysPath%\Wbem;%SysPath%\WindowsPowerShell\v1.0\" 12 | fsutil dirty query %systemdrive% >nul 2>&1 || ( 13 | set "msg=ERROR: right click on the script and 'Run as administrator'" 14 | goto :end 15 | ) 16 | 17 | set xOS=x64 18 | if /i %PROCESSOR_ARCHITECTURE%==x86 (if "%PROCESSOR_ARCHITEW6432%"=="" set xOS=x86) 19 | set "_tempdir=%SystemRoot%\Temp" 20 | set "_logpath=%~dpn0" 21 | set "_workdir=%~dp0" 22 | if "%_workdir:~-1%"=="\" set "_workdir=%_workdir:~0,-1%" 23 | dir /b /adr "%_workdir%" 1>nul 2>nul && set "_logpath=%_tempdir%\%~n0" 24 | if "%_workdir:~0,2%"=="\\" set "_logpath=%_tempdir%\%~n0" 25 | setlocal EnableExtensions EnableDelayedExpansion 26 | 27 | if %_Debug% EQU 0 ( 28 | set "_Nul_1=1>nul" 29 | set "_Nul_2=2>nul" 30 | set "_Nul_2e=2^>nul" 31 | set "_Nul_1_2=1>nul 2>nul" 32 | call :Begin 33 | ) else ( 34 | set "_Nul_1=" 35 | set "_Nul_2=" 36 | set "_Nul_2e=" 37 | set "_Nul_1_2=" 38 | echo. 39 | echo Running in Debug Mode... 40 | echo The window will be closed when finished 41 | @echo on 42 | @prompt $G 43 | @call :Begin >"!_logpath!.tmp" 2>&1 &cmd /u /c type "!_logpath!.tmp">"!_logpath!_Debug.log"&del "!_logpath!.tmp" 44 | ) 45 | exit /b 46 | 47 | :Begin 48 | color 1F 49 | title Office Click-to-Run Retail-to-Volume 50 | for /f "tokens=6 delims=[]. " %%# in ('ver') do set winbuild=%%# 51 | set "_SLMGR=%SystemRoot%\System32\slmgr.vbs" 52 | 53 | if %winbuild% lss 7601 ( 54 | set "msg=Windows 7 SP1 is the minimum supported OS..." 55 | goto :end 56 | ) 57 | sc query ClickToRunSvc %_Nul_1_2% 58 | set error1=%errorlevel% 59 | sc query OfficeSvc %_Nul_1_2% 60 | set error2=%errorlevel% 61 | if %error1% equ 1060 if %error2% equ 1060 ( 62 | set "msg=Could not detect Office ClickToRun service..." 63 | goto :end 64 | ) 65 | 66 | set _Office16=0 67 | for /f "skip=2 tokens=2*" %%a in ('"reg query HKLM\SOFTWARE\Microsoft\Office\ClickToRun /v InstallPath" %_Nul_2e%') do if exist "%%b\Office16\OSPP.VBS" ( 68 | set _Office16=1&set "_OSPP=%%b\Office16\OSPP.VBS" 69 | ) 70 | if exist "%ProgramFiles%\Microsoft Office\Office16\OSPP.VBS" ( 71 | set _Office16=1&set "_OSPP=%ProgramFiles%\Microsoft Office\Office16\OSPP.VBS" 72 | ) else if exist "%ProgramFiles(x86)%\Microsoft Office\Office16\OSPP.VBS" ( 73 | set _Office16=1&set "_OSPP=%ProgramFiles(x86)%\Microsoft Office\Office16\OSPP.VBS" 74 | ) 75 | if %_Office16% equ 0 ( 76 | set "msg=No installed Office 2016/2019 product detected..." 77 | goto :end 78 | ) 79 | 80 | for /f "skip=2 tokens=2*" %%a in ('"reg query HKLM\SOFTWARE\Microsoft\Office\ClickToRun /v InstallPath" %_Nul_2e%') do if not errorlevel 1 (set "_InstallRoot=%%b\root") 81 | if "%_InstallRoot%" neq "" ( 82 | for /f "skip=2 tokens=2*" %%a in ('"reg query HKLM\SOFTWARE\Microsoft\Office\ClickToRun /v PackageGUID" %_Nul_2e%') do if not errorlevel 1 (set "_GUID=%%b") 83 | for /f "skip=2 tokens=2*" %%a in ('"reg query HKLM\SOFTWARE\Microsoft\Office\ClickToRun\Configuration /v ProductReleaseIds" %_Nul_2e%') do if not errorlevel 1 (set "ProductIds=%%b") 84 | set "_Config=HKLM\SOFTWARE\Microsoft\Office\ClickToRun\Configuration" 85 | set "_PRIDs=HKLM\SOFTWARE\Microsoft\Office\ClickToRun\ProductReleaseIDs" 86 | ) else ( 87 | for /f "skip=2 tokens=2*" %%a in ('"reg query HKLM\SOFTWARE\WOW6432Node\Microsoft\Office\ClickToRun /v InstallPath" %_Nul_2e%') do if not errorlevel 1 (set "_InstallRoot=%%b\root") 88 | for /f "skip=2 tokens=2*" %%a in ('"reg query HKLM\SOFTWARE\WOW6432Node\Microsoft\Office\ClickToRun /v PackageGUID" %_Nul_2e%') do if not errorlevel 1 (set "_GUID=%%b") 89 | for /f "skip=2 tokens=2*" %%a in ('"reg query HKLM\SOFTWARE\WOW6432Node\Microsoft\Office\ClickToRun\Configuration /v ProductReleaseIds" %_Nul_2e%') do if not errorlevel 1 (set "ProductIds=%%b") 90 | set "_Config=HKLM\SOFTWARE\WOW6432Node\Microsoft\Office\ClickToRun\Configuration" 91 | set "_PRIDs=HKLM\SOFTWARE\WOW6432Node\Microsoft\Office\ClickToRun\ProductReleaseIDs" 92 | ) 93 | set "_LicensesPath=%_InstallRoot%\Licenses16" 94 | set "_Integrator=%_InstallRoot%\integration\integrator.exe" 95 | for /f "skip=2 tokens=2*" %%a in ('"reg query %_PRIDs% /v ActiveConfiguration" %_Nul_2e%') do set "_PRIDs=%_PRIDs%\%%b" 96 | 97 | if "%ProductIds%" equ "" ( 98 | set "msg=Could not detect Office ProductIDs..." 99 | goto :end 100 | ) 101 | if not exist "!_LicensesPath!\*.xrm-ms" ( 102 | set "msg=Could not detect Office Licenses files..." 103 | goto :end 104 | ) 105 | if not exist "!_Integrator!" ( 106 | set "msg=Could not detect Office Licenses Integrator..." 107 | goto :end 108 | ) 109 | if %winbuild% lss 9200 if not exist "!_OSPP!" ( 110 | set "msg=Could not detect Licensing tool OSPP.vbs..." 111 | goto :end 112 | ) 113 | if %winbuild% geq 10240 set _O365asO2019=0 114 | if exist "!_LicensesPath!\Word2019VL_KMS_Client_AE*.xrm-ms" (set "tag=2019") else (set "tag=") 115 | 116 | :Check 117 | echo. 118 | echo ============================================================ 119 | echo Checking Office Licenses... 120 | echo ============================================================ 121 | if %winbuild% geq 9200 ( 122 | set spp=SoftwareLicensingProduct 123 | set sps=SoftwareLicensingService 124 | ) else ( 125 | set spp=OfficeSoftwareProtectionProduct 126 | set sps=OfficeSoftwareProtectionService 127 | ) 128 | for /f "tokens=2 delims==" %%# in ('"wmic path %sps% get version /value" %_Nul_2e%') do set ver=%%# 129 | wmic path %spp% where (Description like '%%KMSCLIENT%%' AND not LicenseFamily='Office16MondoR_KMS_Automation') get LicenseFamily %_Nul_2% | findstr /i /C:"Office" %_Nul_1% && (set _KMS=1) || (set _KMS=0) 130 | wmic path %spp% where (Description like '%%TIMEBASED%%') get LicenseFamily %_Nul_2% | findstr /i /C:"Office" %_Nul_1% && (set _Time=1) || (set _Time=0) 131 | wmic path %spp% where (Description like '%%Grace%%') get LicenseFamily %_Nul_2% | findstr /i /C:"Office" %_Nul_1% && (set _Grace=1) || (set _Grace=0) 132 | if %_Time% equ 0 if %_Grace% equ 0 if %_KMS% equ 1 ( 133 | set "msg=No Conversion or Cleanup Required..." 134 | goto :end 135 | ) 136 | 137 | :Retail2Volume 138 | echo. 139 | echo ============================================================ 140 | echo Cleaning Current Office Licenses... 141 | echo ============================================================ 142 | "!_workdir!\!xOS!\cleanospp.exe" -Licenses %_Nul_1_2% 143 | echo. 144 | echo ============================================================ 145 | echo Installing Office Volume Licenses... 146 | echo ============================================================ 147 | echo. 148 | set O19Ids=ProPlus2019,ProjectPro2019,VisioPro2019,Standard2019,ProjectStd2019,VisioStd2019 149 | set O16Ids=ProjectPro,VisioPro,Standard,ProjectStd,VisioStd 150 | set A19Ids=Excel2019,Outlook2019,PowerPoint2019,Publisher2019,Word2019 151 | set A16Ids=Excel,OneNote,Outlook,PowerPoint,Publisher,Word 152 | 153 | echo %ProductIds%> "!_tempdir!\ProductIds.txt" 154 | for %%a in (Mondo,%O19Ids%,%A19Ids%,Access2019,SkypeforBusiness2019,Professional2019,HomeBusiness2019,HomeStudent2019,O365ProPlus,O365Business,O365SmallBusPrem,O365HomePrem,O365EduCloud,Professional,HomeBusiness,HomeStudent,%O16Ids%,%A16Ids%,Access,SkypeforBusiness,ProPlus) do ( 155 | set _%%a=0 156 | ) 157 | for %%a in (Mondo,%O19Ids%,%A19Ids%,Access2019,SkypeforBusiness2019,Professional2019,HomeBusiness2019,HomeStudent2019,O365ProPlus,O365Business,O365SmallBusPrem,O365HomePrem,O365EduCloud,Professional,HomeBusiness,HomeStudent,%O16Ids%,%A16Ids%,Access,SkypeforBusiness) do ( 158 | findstr /I /C:"%%aRetail" "!_tempdir!\ProductIds.txt" %_Nul_1% && set _%%a=1 159 | ) 160 | wmic path %spp% get LicenseFamily > "!_tempdir!\sppchk.txt" 2>&1 161 | for %%a in (Mondo,%O19Ids%,%A19Ids%,Access2019,SkypeforBusiness2019,%O16Ids%,%A16Ids%,Access,SkypeforBusiness) do ( 162 | findstr /I /C:"%%aVolume" "!_tempdir!\ProductIds.txt" %_Nul_1% && ( 163 | find /i "%%aVL_KMS_Client" "!_tempdir!\sppchk.txt" %_Nul_1% && (set _%%a=0) || (set _%%a=1) 164 | ) 165 | ) 166 | reg query %_PRIDs%\ProPlusRetail.16 %_Nul_1_2% && set _ProPlus=1 167 | reg query %_PRIDs%\ProPlusVolume.16 %_Nul_1_2% && ( 168 | find /i "Office16ProPlusVL_KMS_Client" "!_tempdir!\sppchk.txt" %_Nul_1% && (set _ProPlus=0) || (set _ProPlus=1) 169 | ) 170 | del /f /q "!_tempdir!\sppchk.txt" >nul 2>&1 171 | del /f /q "!_tempdir!\ProductIds.txt" >nul 2>&1 172 | 173 | if !_Mondo! equ 1 ( 174 | echo Mondo Suite 175 | echo. 176 | call :InsLic Mondo 177 | ) 178 | if !_O365ProPlus! equ 1 ( 179 | if !_Mondo! equ 0 if !_O365asO2019! equ 1 ( 180 | echo O365ProPlus Suite -^> ProPlus%tag% Licenses 181 | echo. 182 | call :InsLic ProPlus%tag% 183 | ) else ( 184 | echo O365ProPlus Suite -^> Mondo Licenses 185 | echo. 186 | call :InsLic O365ProPlus DRNV7-VGMM2-B3G9T-4BF84-VMFTK 187 | if !_Mondo! equ 0 call :InsLic Mondo 188 | ) 189 | ) 190 | if !_O365Business! equ 1 if !_O365ProPlus! equ 0 ( 191 | set _O365ProPlus=1 192 | echo O365Business Suite -^> Mondo Licenses 193 | echo. 194 | call :InsLic O365Business NCHRJ-3VPGW-X73DM-6B36K-3RQ6B 195 | if !_Mondo! equ 0 call :InsLic Mondo 196 | ) 197 | if !_O365SmallBusPrem! equ 1 if !_O365Business! equ 0 if !_O365ProPlus! equ 0 ( 198 | set _O365ProPlus=1 199 | echo O365SmallBusPrem Suite -^> Mondo Licenses 200 | echo. 201 | call :InsLic O365SmallBusPrem 3FBRX-NFP7C-6JWVK-F2YGK-H499R 202 | if !_Mondo! equ 0 call :InsLic Mondo 203 | ) 204 | if !_O365HomePrem! equ 1 if !_O365SmallBusPrem! equ 0 if !_O365Business! equ 0 if !_O365ProPlus! equ 0 ( 205 | set _O365ProPlus=1 206 | echo O365HomePrem Suite -^> Mondo Licenses 207 | echo. 208 | call :InsLic O365HomePrem 9FNY8-PWWTY-8RY4F-GJMTV-KHGM9 209 | if !_Mondo! equ 0 call :InsLic Mondo 210 | ) 211 | if !_O365EduCloud! equ 1 if !_O365HomePrem! equ 0 if !_O365SmallBusPrem! equ 0 if !_O365Business! equ 0 if !_O365ProPlus! equ 0 ( 212 | set _O365ProPlus=1 213 | echo O365EduCloud Suite -^> Mondo Licenses 214 | echo. 215 | call :InsLic O365EduCloud 8843N-BCXXD-Q84H8-R4Q37-T3CPT 216 | if !_Mondo! equ 0 call :InsLic Mondo 217 | ) 218 | if !_Mondo! equ 1 if !_O365ProPlus! equ 0 ( 219 | call :InsLic O365ProPlus DRNV7-VGMM2-B3G9T-4BF84-VMFTK 220 | goto :GVLK 221 | ) 222 | if !_ProPlus2019! equ 1 if !_O365ProPlus! equ 0 ( 223 | echo ProPlus2019 Suite -^> ProPlus%tag% Licenses 224 | echo. 225 | call :InsLic ProPlus%tag% 226 | ) 227 | if !_ProPlus! equ 1 if !_O365ProPlus! equ 0 if !_ProPlus2019! equ 0 ( 228 | echo ProPlus 2016 Suite -^> ProPlus%tag% Licenses 229 | echo. 230 | call :InsLic ProPlus%tag% 231 | ) 232 | if !_Professional2019! equ 1 if !_O365ProPlus! equ 0 if !_ProPlus2019! equ 0 if !_ProPlus! equ 0 ( 233 | echo Professional2019 Suite -^> ProPlus%tag% Licenses 234 | echo. 235 | call :InsLic ProPlus%tag% 236 | ) 237 | if !_Professional! equ 1 if !_O365ProPlus! equ 0 if !_ProPlus2019! equ 0 if !_ProPlus! equ 0 if !_Professional2019! equ 0 ( 238 | echo Professional 2016 Suite -^> ProPlus%tag% Licenses 239 | echo. 240 | call :InsLic ProPlus%tag% 241 | ) 242 | if !_Standard2019! equ 1 if !_O365ProPlus! equ 0 if !_ProPlus2019! equ 0 if !_ProPlus! equ 0 if !_Professional2019! equ 0 if !_Professional! equ 0 ( 243 | echo Standard2019 Suite -^> Standard2019 Licenses 244 | echo. 245 | call :InsLic Standard2019 246 | ) 247 | if !_Standard! equ 1 if !_O365ProPlus! equ 0 if !_ProPlus2019! equ 0 if !_ProPlus! equ 0 if !_Professional2019! equ 0 if !_Professional! equ 0 if !_Standard2019! equ 0 ( 248 | echo Standard 2016 Suite -^> Standard%tag% Licenses 249 | echo. 250 | call :InsLic Standard%tag% 251 | ) 252 | for %%a in (ProjectPro,VisioPro,ProjectStd,VisioStd) do if !_%%a2019! equ 1 ( 253 | echo %%a2019 SKU -^> %%a%tag% Licenses 254 | echo. 255 | if defined tag (call :InsLic %%a2019) else (call :InsLic %%a) 256 | ) 257 | for %%a in (ProjectPro,VisioPro,ProjectStd,VisioStd) do if !_%%a! equ 1 ( 258 | if !_%%a2019! equ 0 ( 259 | echo %%a 2016 SKU -^> %%a%tag% Licenses 260 | echo. 261 | call :InsLic %%a%tag% 262 | ) 263 | ) 264 | for %%a in (HomeBusiness2019,HomeStudent2019) do if !_%%a! equ 1 ( 265 | if !_O365ProPlus! equ 0 if !_ProPlus2019! equ 0 if !_ProPlus! equ 0 if !_Professional2019! equ 0 if !_Professional! equ 0 if !_Standard2019! equ 0 if !_Standard! equ 0 ( 266 | set _Standard2019=1 267 | echo %%a Suite -^> Standard2019 Licenses 268 | echo. 269 | call :InsLic Standard2019 270 | ) 271 | ) 272 | for %%a in (HomeBusiness,HomeStudent) do if !_%%a! equ 1 ( 273 | if !_O365ProPlus! equ 0 if !_ProPlus2019! equ 0 if !_ProPlus! equ 0 if !_Professional2019! equ 0 if !_Professional! equ 0 if !_Standard2019! equ 0 if !_Standard! equ 0 if !_%%a2019! equ 0 ( 274 | set _Standard2019=1 275 | echo %%a 2016 Suite -^> Standard%tag% Licenses 276 | echo. 277 | call :InsLic Standard%tag% 278 | ) 279 | ) 280 | for %%a in (%A19Ids%,OneNote) do if !_%%a! equ 1 ( 281 | if !_O365ProPlus! equ 0 if !_ProPlus2019! equ 0 if !_ProPlus! equ 0 if !_Professional2019! equ 0 if !_Professional! equ 0 if !_Standard2019! equ 0 if !_Standard! equ 0 ( 282 | echo %%a App 283 | echo. 284 | call :InsLic %%a 285 | ) 286 | ) 287 | for %%a in (Excel,Outlook,PowerPoint,Publisher,Word) do if !_%%a! equ 1 ( 288 | if !_O365ProPlus! equ 0 if !_ProPlus2019! equ 0 if !_ProPlus! equ 0 if !_Professional2019! equ 0 if !_Professional! equ 0 if !_Standard2019! equ 0 if !_Standard! equ 0 if !_%%a2019! equ 0 ( 289 | echo %%a App 290 | echo. 291 | call :InsLic %%a%tag% 292 | ) 293 | ) 294 | for %%a in (Access2019) do if !_%%a! equ 1 ( 295 | if !_O365ProPlus! equ 0 if !_ProPlus2019! equ 0 if !_ProPlus! equ 0 if !_Professional2019! equ 0 if !_Professional! equ 0 ( 296 | echo %%a App 297 | echo. 298 | call :InsLic %%a 299 | ) 300 | ) 301 | for %%a in (Access) do if !_%%a! equ 1 ( 302 | if !_O365ProPlus! equ 0 if !_ProPlus2019! equ 0 if !_ProPlus! equ 0 if !_Professional2019! equ 0 if !_Professional! equ 0 if !_%%a2019! equ 0 ( 303 | echo %%a App 304 | echo. 305 | call :InsLic %%a%tag% 306 | ) 307 | ) 308 | for %%a in (SkypeforBusiness2019) do if !_%%a! equ 1 ( 309 | if !_O365ProPlus! equ 0 if !_ProPlus2019! equ 0 if !_ProPlus! equ 0 ( 310 | echo %%a App 311 | echo. 312 | call :InsLic %%a 313 | ) 314 | ) 315 | for %%a in (SkypeforBusiness) do if !_%%a! equ 1 ( 316 | if !_O365ProPlus! equ 0 if !_ProPlus2019! equ 0 if !_ProPlus! equ 0 if !_%%a2019! equ 0 ( 317 | echo %%a App 318 | echo. 319 | call :InsLic %%a%tag% 320 | ) 321 | ) 322 | goto :GVLK 323 | 324 | :InsLic 325 | set "_ID=%1Volume" 326 | set "_pkey=" 327 | if not "%2"=="" ( 328 | set "_ID=%1Retail" 329 | set "_pkey=PidKey=%2" 330 | ) 331 | reg delete %_Config% /f /v %_ID%.OSPPReady %_Nul_1_2% 332 | "!_Integrator!" /I /License PRIDName=%_ID%.16 %_pkey% PackageGUID="%_GUID%" PackageRoot="!_InstallRoot!" %_Nul_1% 333 | reg add %_Config% /f /v %_ID%.OSPPReady /t REG_SZ /d 1 %_Nul_1% 334 | reg query %_Config% /v ProductReleaseIds | findstr /I "%_ID%" %_Nul_1% 335 | if %errorlevel% neq 0 ( 336 | for /f "skip=2 tokens=2*" %%a in ('reg query %_Config% /v ProductReleaseIds') do reg add %_Config% /f /v ProductReleaseIds /t REG_SZ /d "%%b,%_ID%" %_Nul_1% 337 | ) 338 | exit /b 339 | 340 | :GVLK 341 | echo ============================================================ 342 | echo Installing Missing KMS Client Keys... 343 | echo ============================================================ 344 | echo. 345 | for /f "tokens=2 delims==" %%# in ('"wmic path %spp% where (Description like '%%KMSCLIENT%%' AND LicenseFamily like 'Office%%' AND PartialProductKey=NULL) get ID /value" %_Nul_2e%') do (set app=%%#&call :InsKey) 346 | if exist "%SystemRoot%\System32\spp\store_test\2.0\tokens.dat" ( 347 | echo. 348 | echo ============================================================ 349 | echo Refreshing Windows Insider Preview Licenses... 350 | echo ============================================================ 351 | echo. 352 | cscript //Nologo //B %_SLMGR% /rilc 353 | ) 354 | set "msg=Finished" 355 | goto :end 356 | 357 | :InsKey 358 | if /i '%app%' equ 'e914ea6e-a5fa-4439-a394-a9bb3293ca09' exit /b 359 | if /i '%app%' equ '0bc88885-718c-491d-921f-6f214349e79c' exit /b 360 | if /i '%app%' equ 'fc7c4d0c-2e85-4bb9-afd4-01ed1476b5e9' exit /b 361 | if /i '%app%' equ '500f6619-ef93-4b75-bcb4-82819998a3ca' exit /b 362 | set "key=" 363 | for /f "tokens=2 delims==" %%# in ('"wmic path %spp% where ID='%app%' get LicenseFamily /value"') do echo %%# 364 | call "!_workdir!\x86\keyOff.cmd" %app% 365 | if "%key%" equ "" (echo Could not find matching gVLK&echo.&exit /b) 366 | wmic path %sps% where version='%ver%' call InstallProductKey ProductKey="%key%" %_Nul_1_2% 367 | set ERRORCODE=%ERRORLEVEL% 368 | if %ERRORCODE% neq 0 ( 369 | cmd /c exit /b %ERRORCODE% 370 | echo Failed: 0x!=ExitCode! 371 | ) 372 | echo. 373 | exit /b 374 | 375 | :end 376 | echo. 377 | echo ============================================================ 378 | echo %msg% 379 | echo ============================================================ 380 | echo. 381 | echo Press any key to exit... 382 | if %_Debug% EQU 0 pause >nul 383 | goto :eof -------------------------------------------------------------------------------- /office-C2R-to-VOL/README.md: -------------------------------------------------------------------------------- 1 | # Convert Office 2016/ 2019 /O365 ClickToRun installation licensing from Retail to Volume 2 | 3 | which then can be activated easily using various KMS solutions 4 | 5 | - All current Office licenses will be cleaned up 6 | then, proper Volume licenses will be installed based on detected Product IDs 7 | 8 | - "Mondo" Suite cover all products, if detected, only its licenses will be installed 9 | 10 | - "O365ProPlus" Suite will be converted with Mondo licenses by default 11 | 12 | - "Professional" Suite will be converted with ProPlus licenses 13 | 14 | - If main products SKUs are detected, separate apps licenses will not be installed to avoid duplication 15 | 16 | SKUs : O365ProPlus, ProPlus, Professional, Standard, Visio, Project 17 | Apps : Access, Excel, Onenote, Outlook, Powerpoint, Publisher, SkypeForBusiness, Word 18 | 19 | O365ProPlus and ProPlus cover all apps 20 | Professional cover all apps except SkypeForBusiness 21 | Standard cover all apps except Access, SkypeForBusiness 22 | 23 | - This is not an activator, just a licensing converter 24 | 25 | - Office 2019 products are officially blocked on Windows 7 and 8.1 26 | to workaround that, follow these steps: 27 | 28 | - if you want Office Professional Plus 2019: 29 | 1) install O365ProPlusRetail SKU 30 | 2) edit Convert-C2R.cmd and set _O365asO2019=1 31 | 3) run Convert-C2R.cmd 32 | 33 | - if you want Project 2019 and/or Visio 2019: 34 | 1) install desired SKU: ProjectProRetail, ProjectStdRetail, VisioProRetail, VisioStdRetail 35 | 2) run Convert-C2R.cmd 36 | 37 | # Office 2016 /2019 /O365 C2R转换VOL批处理 38 | - 该脚本用于转换c2r产品(office2016/ 2019 / O365)到VOL版本。 39 | - 请用右键管理员运行,批处理会清除当前所有证书并根据对应产品ID导入VOL证书。 40 | - Mondo证书覆盖所有产品,因此O365默认会安装Mondo证书,安装后会显示2016 Mondo,但它仍然是Office 365并具有Office 365的特性。而Professional默认会安装ProPlus证书。其他产品ID会安装对应产品证书。 41 | - Windows7和8.1被微软禁止安装Office2019,可以安装O365并编辑脚本_O365asO2019=1即可。 42 | 43 | -------------------------------------------------------------------------------- /office-C2R-to-VOL/x64/cleanospp.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mr-xn/kms-server-deploy/18e0fa83b9c34cc15d8b2cefdfa492f02245eb89/office-C2R-to-VOL/x64/cleanospp.exe -------------------------------------------------------------------------------- /office-C2R-to-VOL/x64/msvcr100.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mr-xn/kms-server-deploy/18e0fa83b9c34cc15d8b2cefdfa492f02245eb89/office-C2R-to-VOL/x64/msvcr100.dll -------------------------------------------------------------------------------- /office-C2R-to-VOL/x86/cleanospp.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mr-xn/kms-server-deploy/18e0fa83b9c34cc15d8b2cefdfa492f02245eb89/office-C2R-to-VOL/x86/cleanospp.exe -------------------------------------------------------------------------------- /office-C2R-to-VOL/x86/keyOff.cmd: -------------------------------------------------------------------------------- 1 | if "%~1"=="" exit /b 2 | goto :%1 || exit /b 3 | 4 | :: Office 2019 5 | :0bc88885-718c-491d-921f-6f214349e79c 6 | set "key=VQ9DP-NVHPH-T9HJC-J9PDT-KTQRG" &:: Professional Plus C2R-P 7 | exit /b 8 | 9 | :fc7c4d0c-2e85-4bb9-afd4-01ed1476b5e9 10 | set "key=XM2V9-DN9HH-QB449-XDGKC-W2RMW" &:: Project Professional C2R-P 11 | exit /b 12 | 13 | :500f6619-ef93-4b75-bcb4-82819998a3ca 14 | set "key=N2CG9-YD3YK-936X4-3WR82-Q3X4H" &:: Visio Professional C2R-P 15 | exit /b 16 | 17 | :85dd8b5f-eaa4-4af3-a628-cce9e77c9a03 18 | set "key=NMMKJ-6RK4F-KMJVX-8D9MJ-6MWKP" &:: Professional Plus 19 | exit /b 20 | 21 | :6912a74b-a5fb-401a-bfdb-2e3ab46f4b02 22 | set "key=6NWWJ-YQWMR-QKGCB-6TMB3-9D9HK" &:: Standard 23 | exit /b 24 | 25 | :2ca2bf3f-949e-446a-82c7-e25a15ec78c4 26 | set "key=B4NPR-3FKK7-T2MBV-FRQ4W-PKD2B" &:: Project Professional 27 | exit /b 28 | 29 | :1777f0e3-7392-4198-97ea-8ae4de6f6381 30 | set "key=C4F7P-NCP8C-6CQPT-MQHV9-JXD2M" &:: Project Standard 31 | exit /b 32 | 33 | :5b5cf08f-b81a-431d-b080-3450d8620565 34 | set "key=9BGNQ-K37YR-RQHF2-38RQ3-7VCBB" &:: Visio Professional 35 | exit /b 36 | 37 | :e06d7df3-aad0-419d-8dfb-0ac37e2bdf39 38 | set "key=7TQNQ-K3YQQ-3PFH7-CCPPM-X4VQ2" &:: Visio Standard 39 | exit /b 40 | 41 | :9e9bceeb-e736-4f26-88de-763f87dcc485 42 | set "key=9N9PT-27V4Y-VJ2PD-YXFMF-YTFQT" &:: Access 43 | exit /b 44 | 45 | :237854e9-79fc-4497-a0c1-a70969691c6b 46 | set "key=TMJWT-YYNMB-3BKTF-644FC-RVXBD" &:: Excel 47 | exit /b 48 | 49 | :c8f8a301-19f5-4132-96ce-2de9d4adbd33 50 | set "key=7HD7K-N4PVK-BHBCQ-YWQRW-XW4VK" &:: Outlook 51 | exit /b 52 | 53 | :3131fd61-5e4f-4308-8d6d-62be1987c92c 54 | set "key=RRNCX-C64HY-W2MM7-MCH9G-TJHMQ" &:: PowerPoint 55 | exit /b 56 | 57 | :9d3e4cca-e172-46f1-a2f4-1d2107051444 58 | set "key=G2KWX-3NW6P-PY93R-JXK2T-C9Y9V" &:: Publisher 59 | exit /b 60 | 61 | :734c6c6e-b0ba-4298-a891-671772b2bd1b 62 | set "key=NCJ33-JHBBY-HTK98-MYCV8-HMKHJ" &:: Skype for Business 63 | exit /b 64 | 65 | :059834fe-a8ea-4bff-b67b-4d006b5447d3 66 | set "key=PBX3G-NWMT6-Q7XBW-PYJGG-WXD33" &:: Word 67 | exit /b 68 | 69 | :: Office 2016 70 | :829b8110-0e6f-4349-bca4-42803577788d 71 | set "key=WGT24-HCNMF-FQ7XH-6M8K7-DRTW9" &:: Project Professional C2R-P 72 | exit /b 73 | 74 | :cbbaca45-556a-4416-ad03-bda598eaa7c8 75 | set "key=D8NRQ-JTYM3-7J2DX-646CT-6836M" &:: Project Standard C2R-P 76 | exit /b 77 | 78 | :b234abe3-0857-4f9c-b05a-4dc314f85557 79 | set "key=69WXN-MBYV6-22PQG-3WGHK-RM6XC" &:: Visio Professional C2R-P 80 | exit /b 81 | 82 | :361fe620-64f4-41b5-ba77-84f8e079b1f7 83 | set "key=NY48V-PPYYH-3F4PX-XJRKJ-W4423" &:: Visio Standard C2R-P 84 | exit /b 85 | 86 | :e914ea6e-a5fa-4439-a394-a9bb3293ca09 87 | set "key=DMTCJ-KNRKX-26982-JYCKT-P7KB6" &:: MondoR 88 | exit /b 89 | 90 | :9caabccb-61b1-4b4b-8bec-d10a3c3ac2ce 91 | set "key=HFTND-W9MK4-8B7MJ-B6C4G-XQBR2" &:: Mondo 92 | exit /b 93 | 94 | :d450596f-894d-49e0-966a-fd39ed4c4c64 95 | set "key=XQNVK-8JYDB-WJ9W3-YJ8YR-WFG99" &:: Professional Plus 96 | exit /b 97 | 98 | :dedfa23d-6ed1-45a6-85dc-63cae0546de6 99 | set "key=JNRGM-WHDWX-FJJG3-K47QV-DRTFM" &:: Standard 100 | exit /b 101 | 102 | :4f414197-0fc2-4c01-b68a-86cbb9ac254c 103 | set "key=YG9NW-3K39V-2T3HJ-93F3Q-G83KT" &:: Project Professional 104 | exit /b 105 | 106 | :da7ddabc-3fbe-4447-9e01-6ab7440b4cd4 107 | set "key=GNFHQ-F6YQM-KQDGJ-327XX-KQBVC" &:: Project Standard 108 | exit /b 109 | 110 | :6bf301c1-b94a-43e9-ba31-d494598c47fb 111 | set "key=PD3PC-RHNGV-FXJ29-8JK7D-RJRJK" &:: Visio Professional 112 | exit /b 113 | 114 | :aa2a7821-1827-4c2c-8f1d-4513a34dda97 115 | set "key=7WHWN-4T7MP-G96JF-G33KR-W8GF4" &:: Visio Standard 116 | exit /b 117 | 118 | :67c0fc0c-deba-401b-bf8b-9c8ad8395804 119 | set "key=GNH9Y-D2J4T-FJHGG-QRVH7-QPFDW" &:: Access 120 | exit /b 121 | 122 | :c3e65d36-141f-4d2f-a303-a842ee756a29 123 | set "key=9C2PK-NWTVB-JMPW8-BFT28-7FTBF" &:: Excel 124 | exit /b 125 | 126 | :d8cace59-33d2-4ac7-9b1b-9b72339c51c8 127 | set "key=DR92N-9HTF2-97XKM-XW2WJ-XW3J6" &:: OneNote 128 | exit /b 129 | 130 | :ec9d9265-9d1e-4ed0-838a-cdc20f2551a1 131 | set "key=R69KK-NTPKF-7M3Q4-QYBHW-6MT9B" &:: Outlook 132 | exit /b 133 | 134 | :d70b1bba-b893-4544-96e2-b7a318091c33 135 | set "key=J7MQP-HNJ4Y-WJ7YM-PFYGF-BY6C6" &:: Powerpoint 136 | exit /b 137 | 138 | :041a06cb-c5b8-4772-809f-416d03d16654 139 | set "key=F47MM-N3XJP-TQXJ9-BP99D-8K837" &:: Publisher 140 | exit /b 141 | 142 | :83e04ee1-fa8d-436d-8994-d31a862cab77 143 | set "key=869NQ-FJ69K-466HW-QYCP2-DDBV6" &:: Skype for Business 144 | exit /b 145 | 146 | :bb11badf-d8aa-470e-9311-20eaf80fe5cc 147 | set "key=WXY84-JN2Q9-RBCCQ-3Q3J3-3PFJ6" &:: Word 148 | exit /b 149 | 150 | :: Office 2013 151 | :dc981c6b-fc8e-420f-aa43-f8f33e5c0923 152 | set "key=42QTK-RN8M7-J3C4G-BBGYM-88CYV" &:: Mondo 153 | exit /b 154 | 155 | :b322da9c-a2e2-4058-9e4e-f59a6970bd69 156 | set "key=YC7DK-G2NP3-2QQC3-J6H88-GVGXT" &:: Professional Plus 157 | exit /b 158 | 159 | :b13afb38-cd79-4ae5-9f7f-eed058d750ca 160 | set "key=KBKQT-2NMXY-JJWGP-M62JB-92CD4" &:: Standard 161 | exit /b 162 | 163 | :4a5d124a-e620-44ba-b6ff-658961b33b9a 164 | set "key=FN8TT-7WMH6-2D4X9-M337T-2342K" &:: Project Professional 165 | exit /b 166 | 167 | :427a28d1-d17c-4abf-b717-32c780ba6f07 168 | set "key=6NTH3-CW976-3G3Y2-JK3TX-8QHTT" &:: Project Standard 169 | exit /b 170 | 171 | :e13ac10e-75d0-4aff-a0cd-764982cf541c 172 | set "key=C2FG9-N6J68-H8BTJ-BW3QX-RM3B3" &:: Visio Professional 173 | exit /b 174 | 175 | :ac4efaf0-f81f-4f61-bdf7-ea32b02ab117 176 | set "key=J484Y-4NKBF-W2HMG-DBMJC-PGWR7" &:: Visio Standard 177 | exit /b 178 | 179 | :6ee7622c-18d8-4005-9fb7-92db644a279b 180 | set "key=NG2JY-H4JBT-HQXYP-78QH9-4JM2D" &:: Access 181 | exit /b 182 | 183 | :f7461d52-7c2b-43b2-8744-ea958e0bd09a 184 | set "key=VGPNG-Y7HQW-9RHP7-TKPV3-BG7GB" &:: Excel 185 | exit /b 186 | 187 | :fb4875ec-0c6b-450f-b82b-ab57d8d1677f 188 | set "key=H7R7V-WPNXQ-WCYYC-76BGV-VT7GH" &:: Groove 189 | exit /b 190 | 191 | :a30b8040-d68a-423f-b0b5-9ce292ea5a8f 192 | set "key=DKT8B-N7VXH-D963P-Q4PHY-F8894" &:: InfoPath 193 | exit /b 194 | 195 | :1b9f11e3-c85c-4e1b-bb29-879ad2c909e3 196 | set "key=2MG3G-3BNTT-3MFW9-KDQW3-TCK7R" &:: Lync 197 | exit /b 198 | 199 | :efe1f3e6-aea2-4144-a208-32aa872b6545 200 | set "key=TGN6P-8MMBC-37P2F-XHXXK-P34VW" &:: OneNote 201 | exit /b 202 | 203 | :771c3afa-50c5-443f-b151-ff2546d863a0 204 | set "key=QPN8Q-BJBTJ-334K3-93TGY-2PMBT" &:: Outlook 205 | exit /b 206 | 207 | :8c762649-97d1-4953-ad27-b7e2c25b972e 208 | set "key=4NT99-8RJFH-Q2VDH-KYG2C-4RD4F" &:: Powerpoint 209 | exit /b 210 | 211 | :00c79ff1-6850-443d-bf61-71cde0de305f 212 | set "key=PN2WF-29XG2-T9HJ7-JQPJR-FCXK4" &:: Publisher 213 | exit /b 214 | 215 | :d9f5b1c6-5386-495a-88f9-9ad6b41ac9b3 216 | set "key=6Q7VD-NX8JD-WJ2VH-88V73-4GBJ7" &:: Word 217 | exit /b 218 | 219 | :: Office 2010 220 | :09ed9640-f020-400a-acd8-d7d867dfd9c2 221 | set "key=YBJTT-JG6MD-V9Q7P-DBKXJ-38W9R" &:: Mondo 222 | exit /b 223 | 224 | :ef3d4e49-a53d-4d81-a2b1-2ca6c2556b2c 225 | set "key=7TC2V-WXF6P-TD7RT-BQRXR-B8K32" &:: Mondo2 226 | exit /b 227 | 228 | :6f327760-8c5c-417c-9b61-836a98287e0c 229 | set "key=VYBBJ-TRJPB-QFQRF-QFT4D-H3GVB" &:: Professional Plus 230 | exit /b 231 | 232 | :9da2a678-fb6b-4e67-ab84-60dd6a9c819a 233 | set "key=V7QKV-4XVVR-XYV4D-F7DFM-8R6BM" &:: Standard 234 | exit /b 235 | 236 | :df133ff7-bf14-4f95-afe3-7b48e7e331ef 237 | set "key=YGX6F-PGV49-PGW3J-9BTGG-VHKC6" &:: Project Professional 238 | exit /b 239 | 240 | :5dc7bf61-5ec9-4996-9ccb-df806a2d0efe 241 | set "key=4HP3K-88W3F-W2K3D-6677X-F9PGB" &:: Project Standard 242 | exit /b 243 | 244 | :92236105-bb67-494f-94c7-7f7a607929bd 245 | set "key=D9DWC-HPYVV-JGF4P-BTWQB-WX8BJ" &:: Visio Premium 246 | exit /b 247 | 248 | :e558389c-83c3-4b29-adfe-5e4d7f46c358 249 | set "key=7MCW8-VRQVK-G677T-PDJCM-Q8TCP" &:: Visio Professional 250 | exit /b 251 | 252 | :9ed833ff-4f92-4f36-b370-8683a4f13275 253 | set "key=767HD-QGMWX-8QTDB-9G3R2-KHFGJ" &:: Visio Standard 254 | exit /b 255 | 256 | :8ce7e872-188c-4b98-9d90-f8f90b7aad02 257 | set "key=V7Y44-9T38C-R2VJK-666HK-T7DDX" &:: Access 258 | exit /b 259 | 260 | :cee5d470-6e3b-4fcc-8c2b-d17428568a9f 261 | set "key=H62QG-HXVKF-PP4HP-66KMR-CW9BM" &:: Excel 262 | exit /b 263 | 264 | :8947d0b8-c33b-43e1-8c56-9b674c052832 265 | set "key=QYYW6-QP4CB-MBV6G-HYMCJ-4T3J4" &:: Groove (SharePoint Workspace) 266 | exit /b 267 | 268 | :ca6b6639-4ad6-40ae-a575-14dee07f6430 269 | set "key=K96W8-67RPQ-62T9Y-J8FQJ-BT37T" &:: InfoPath 270 | exit /b 271 | 272 | :ab586f5c-5256-4632-962f-fefd8b49e6f4 273 | set "key=Q4Y4M-RHWJM-PY37F-MTKWH-D3XHX" &:: OneNote 274 | exit /b 275 | 276 | :ecb7c192-73ab-4ded-acf4-2399b095d0cc 277 | set "key=7YDC2-CWM8M-RRTJC-8MDVC-X3DWQ" &:: Outlook 278 | exit /b 279 | 280 | :45593b1d-dfb1-4e91-bbfb-2d5d0ce2227a 281 | set "key=RC8FX-88JRY-3PF7C-X8P67-P4VTT" &:: Powerpoint 282 | exit /b 283 | 284 | :b50c4f75-599b-43e8-8dcd-1081a7967241 285 | set "key=BFK7F-9MYHM-V68C7-DRQ66-83YTP" &:: Publisher 286 | exit /b 287 | 288 | :2d0882e7-a4e7-423b-8ccc-70d91e0158b1 289 | set "key=HVHB3-C6FV7-KQX9W-YQG79-CRY7T" &:: Word 290 | exit /b 291 | 292 | :ea509e87-07a1-4a45-9edc-eba5a39f36af 293 | set "key=D6QFG-VBYP2-XQHM7-J97RH-VVRCK" &:: Home and Business 294 | exit /b 295 | -------------------------------------------------------------------------------- /office-C2R-to-VOL/x86/msvcr100.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mr-xn/kms-server-deploy/18e0fa83b9c34cc15d8b2cefdfa492f02245eb89/office-C2R-to-VOL/x86/msvcr100.dll -------------------------------------------------------------------------------- /office2010-2016转VOL.cmd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mr-xn/kms-server-deploy/18e0fa83b9c34cc15d8b2cefdfa492f02245eb89/office2010-2016转VOL.cmd --------------------------------------------------------------------------------