前文中提到,添加好注册表后,会弹出如下的信任提示框:

前文中使用了最简单的方法,将插件位置移动到Program Files下,以避免检查。

如果不想放到Program Files下咋办呢?

我们发现,如果在上面的信任提示框点击了安装,则会往注册表项HKEY_CURRENT_USER\SOFTWARE\Microsoft\VSTO\Security\Inclusion中添加一个项(项名是一个随机的UUID),在这个项下有PublicKey和Url的值。

那我们直接模拟写入这个注册表值就好啦。

1
2
3
reg add HKEY_CURRENT_USER\SOFTWARE\Microsoft\VSTO\Security\Inclusion\e02958dc-28c8-11ec-9621-0242ac130002 /f
reg add HKEY_CURRENT_USER\SOFTWARE\Microsoft\VSTO\Security\Inclusion\e02958dc-28c8-11ec-9621-0242ac130002 /v PublicKey /t REG_SZ /d "<RSAKeyValue><Modulus>yt17/nBfyIQMcooaYZCZ+FQ1X6XDAziTUe8yq6WK1yiwrmO4Hu4+ufOTE4NQ/Ka/CQOjLk5qZ35Vbk9Immp2v0e5jFJitlTS1n6RxwE56BBisN4hHsKDCSkDHm8DXj3fV86gmCHXQpLPJUnbVGtHP91ZfZvFbZYfCKXL6VJfbWk=</Modulus><Exponent>AQAB</Exponent></RSAKeyValue>" /f
reg add HKEY_CURRENT_USER\SOFTWARE\Microsoft\VSTO\Security\Inclusion\e02958dc-28c8-11ec-9621-0242ac130002 /v Url /t REG_SZ /d "file:///D:/PowerPointAddInDemo/PowerPointAddInDemo.vsto" /f

e02958dc-28c8-11ec-9621-0242ac130002是随机的UUID字符串,你可以用任意工具生成一个。

PublicKey则可以从vsto文件中获取。

vsto文件是xml格式的,PublicKey的路径是 Signature > KeyInfo > KeyValue 。

完整的脚本在这里.

Reference