0%

我破解了你的破解

PD Runner用不了了,自己撸个启动器吧。

背景

用MAC电脑偶尔有些时候需要用到windows,之前还有双系统可以选择,但从M1芯片开始,双系统就玩不了了,好在有虚拟机,而且性能还不错,日常够用了。

我用的是Parallels,之前有个PD Runner,适用于Parallels Desktop的启动器, 可无视试用期限强制启动客户机 (支持 PD17.1.0),但是最近用不了了。

一番搜索学习后,B站发现了个用PD Start的视频,也可以实现绕过限制。然而实际下载安装后发现有报错无法使用。从视频得知作者用的是python写的,比较对口,于是便开始对它二次开发。

本项目仅用于学习研究使用, 请支持正版!

过程

扒源码

作者本身是没有提供源码的,但是这个工程使用的py2app打包,因此可以分析源码肯定在应用包中。

分析源码

作者代码还是比较工整的,通过源码中分析不难看出,其核心步骤就是修改系统时间,调用系统命令启动虚拟机后再改回系统时间。

1
2
3
4
5
6
7
8
9
10
11
12
13
# 修改电脑时间
(datestatus, dateoutput) = subprocess.getstatusoutput(
"echo {} | sudo -S {}".format(config["password"], f"date {pc_time}2019")) # 设置日期
print(datestatus, dateoutput)

prlctl = "/usr/local/bin/prlctl" # 怕环境变量异常,尝试使用更粗暴的方式
cmd = prlctl + " start " + "\"" + parm.title + "\""
(status, output) = subprocess.getstatusoutput(cmd) # 启动PD的系统

# 将时间改回来
(datestatus, dateoutput) = subprocess.getstatusoutput(
"echo {} | sudo -S {}".format(config["password"], f"date {pc_time}{nowdate.year}")) # 设置日期
print(datestatus, dateoutput)
自定义开发

实际也没改啥,不过介于作者提供的版本运行报错,我自己装了相关的运行依赖debug来看,是没有出现了,估计是m1版本的问题。

于是就用pipenv管理下依赖,源码也用git管理下,后面有问题也好详细定位处理,顺手改了改文案重新打包吧。

1
2
3
pipenv --python=3.8
pipenv install
python setup.py py2app -A

使用

效果还不错,后面看需求再给它加功能吧。

亲测macbook m1 pro + PD 17.1 有效。

总结

当是复习python的桌面应用开发了,有条件的还请支持原版吧,我比较穷。