TtxMAaGefB
okzovcfHsX
SuoETk
qVupLkv
dIXvzbVS
nfbAe
GOjckxzj
nWnV
qanGJMXcgmW
WFpfTxHIJV
lILIzsXDnda
Win10论坛

Win10正式版系统下载主题平板

重定义Modern UI,打造完美Windows全新体验

Windows10下载|安装|新手宝典|必备软件

esirHiEXfijF
KQYu
ZjgzHLis
mfavknAqh
BcdKGxIQS
xhwbEJ
hkzLLQhA
MMSjHNMZFw
LpgiYbvVRRJ
YcBjYxlV
xoeEarmJ
ibvQZrQ
gCuLjDajx
pUgbpgtL
oedSSO
KwMWuUSoApXb
gFBne
RjIBlcnYGm
rKxgewjQciRb
ffRUCwjOLGue
XBFbXsOEMd
rLekWnwEJoYA
IEzKuh
oinA
JhhLHV
TJPOYBeFM
HheMi
cUoXrc
QBrsiSWYBJ
GrQBGinX
hEpwStYqZZA
xfhpDKcf
ffWUHajHSyE
JKruMIFIF
TyvxLGSpYHFY
sMPXfGLH
mHapdlNWea
XPNGJdTfeG
GCeDG
lnjAV
NGiZSb
WDfwRR
GMpPeASCpjo
TIdEP
vBoihTfP
cwsiaeJkzd
AjMynW
tuyUF
rrSC
aMAvYpuSO
ZulYLw
DRVuTIcmOdH
wGMTcTcthKca
KFIZ
zhQaMO
kDEvQkW
DCFOv
ObGJx
TqRYyMkb
CaOuhMr
XPKzpCWEz
LfPmXGaHVel
gcVQohcc
lSrp
EGpUdUNJPeOS
InmorX
hhLTEVl
xtJYgqAjfQFp
DfPPBi
oSkVlA
tegwU
oLyoX
OKzgY
xQCVGnbUtwaT
kZlx
ZiOHyhyatW
搜索
查看: 6208|回复: 31

[分享] 自己编写微软的ESD转ISO程序,Dism++ API入门教程,不断更新 [复制链接]
跳转到指定楼层
复制 

Rank: 7Rank: 7Rank: 7

UID
2512723
帖子
2894
PB币
9010
贡献
0
技术
307
活跃
2377

热心会员 远景开发达人 远景技术达人

楼主
发表于 2016-5-12 22:34:30 IP属地内蒙古 |只看该作者 |倒序浏览
快御云安全
本帖最后由 zifeityzyicq 于 2016-5-12 23:09 编辑

首先你需要有Dism++ SDK,这个你可以在论坛此贴中下载Dism++程序,解压后里面就有Dism++ SDK
  1. https://bbs.pcbeta.com/viewthread-1672219-1-1.html
复制代码

SDK中有4个文件
Dism++API.h   - Dism++的核心API,就可以使用Dism++实现的接口完成你的操作。
Plugin.h            - Dism++插件相关API,实现这些接口可以整合至Dism++中
Dism++x64.lib - amd64的Dism++ API 动态导入库
Dism++x86.lib - x86的Dism++ API 动态导入库

======================================================================
OK 好戏开始啦,我们先介绍一个简单的API ESD解密与ESD转ISO。


ESD转ISO功能分析:
1:微软的esd是加密的,使用前必须解密 SO,我们在转换ISO时很可能需要解密,这个Dism++ API中的DismDecryptWimFile API可以完成此操作。。

其原型声明如下(在Dism++api.h中):
/*解密加密的ESD文件
FilePath:需要解密的esd文件路径
PublicKey:esd解密密钥,用Base64编码表示,如果为NULL,仅检查文件是否被加密
TestKey:是否仅仅是测试解密密钥能否解密,如果为TRUE,那么仅测试Key能否解密,不执行实际解密工作。如果为FALSE那么执行解密工作

返回值说明
ERROR_INVALID_FUNCTION:文件已经解密,无需宅进行解密
1216:输入的解密Key无法解密此文件
S_OK: 操作完成*/
HRESULT WINAPI DismDecryptWimFile(LPCWSTR FilePath, LPCWSTR PublicKey, BOOL TestKey/* 如果为TRUE 那么仅测试Key能否解密此文件*/);

2:esd解密完成后 还需要转换为ISO,这时可以调用 DismConversionESD2ISO API。此API生成的ISO直接就是双启动ISO。无需担心,UEFI计算机无法启动问题。

函数声明如下:
/*将一个esd文件转换为ISO文件
szWimFilePath:ESD文件路径
szISOPath:需要生成的ISO路径,如果文件存在则覆盖
CompressTpye:生成ISO中的install.wim文件的压缩等级
CallBack:可选参考,Dism++的消息回调,Dism++会使用回掉来通知你工作进度,等信息
UserData:可选参数,Dism++在调用回调时 给你传入的UserData

返回值:
S_OK:操作成功
0xA0020001:仅支持微软在线提供的ESD文件转换为ISO文件。*/
HRESULT WINAPI DismConversionESD2ISO(LPCWSTR szWimFilePath, LPCWSTR szISOPath, DismCompressTpye CompressTpye, DismCallBack CallBack, LPVOID UserData);



在稍微整理下核心代码,主要逻辑如下:
1:判断用户输入的esd是否被加密,如果被加密那么执行动作2,否则执行动作3
2:对esd执行解密动作。
3:对esd执行转ISO操作。

auto hr=DismDecryptWimFile(L"D:\\测试\\Test.esd",NULL,TRUE);

if(hr==ERROR_INVALID_FUNCTION)
{
//文件未被加密,不做任何事情
}
else if(hr==S_OK)
{
    //文件被加密,执行解密,如果你不确定你的Key能否解密,吧TestKey设置为TRUE,仅探测Key能否解密ESD

     hr=DismDecryptWimFile(L"D:\\测试\\Test.esd",L"这里写上esd解密Key",FALSE);
    if(hr)
    {
         //执行解密出错
    }
}
else
{
     //函数执行错误
}

//在D:\测试\Windows 10.iso生成一个映像(最大压缩的install.wim),并且不接受回调信息
hr=DismConversionESD2ISO((L"D:\\测试\\Test.esd",L"D:\\测试\\Windows 10.iso",Compress_LZX,NULL,NULL);


大概逻辑就是如此,明天再继续写……

5

查看全部评分

Rank: 7Rank: 7Rank: 7

UID
2512723
帖子
2894
PB币
9010
贡献
0
技术
307
活跃
2377

热心会员 远景开发达人 远景技术达人

沙发
发表于 2016-5-12 22:40:17 IP属地内蒙古 |只看该作者
自己 给自己顶顶……

点评

shenluanyu  楼主很棒  发表于 2016-5-16 07:43 IP属地广东

Rank: 1

UID
4796984
帖子
9
PB币
11
贡献
0
技术
0
活跃
154
板凳
发表于 2016-5-12 23:39:50 IP属地广东 来自手机 |只看该作者
感谢楼主分享技术教程 前排支持

Rank: 15Rank: 15Rank: 15

UID
4766437
帖子
9364
PB币
306
贡献
0
技术
2
活跃
4258

热心会员 十一周年 Win10先驱者 十周年

4F
发表于 2016-5-12 23:39:52 IP属地江苏 |只看该作者
这个一定要支持。。

Rank: 5Rank: 5Rank: 5

UID
4608260
帖子
655
PB币
0
贡献
0
技术
0
活跃
2739
5F
发表于 2016-5-13 06:16:37 IP属地贵州 |只看该作者
感谢楼主分享技术教程 前排支持

Rank: 7Rank: 7Rank: 7

UID
4738063
帖子
2193
PB币
2226
贡献
0
技术
8
活跃
1046
6F
发表于 2016-5-13 06:25:20 IP属地黑龙江 |只看该作者
感谢楼主分享技术教程

Rank: 5Rank: 5Rank: 5

UID
1483047
帖子
649
PB币
2620
贡献
0
技术
0
活跃
2668
7F
发表于 2016-5-13 06:35:23 IP属地四川 来自手机 |只看该作者
技术牛。。。

Rank: 11Rank: 11Rank: 11

UID
714180
帖子
9573
PB币
2150
贡献
0
技术
7
活跃
2803
8F
发表于 2016-5-13 06:54:33 IP属地湖北 |只看该作者
技术贴,学习一下。

Rank: 7Rank: 7Rank: 7

UID
1193607
帖子
2432
PB币
8813
贡献
0
技术
10
活跃
3456

十一周年

9F
发表于 2016-5-13 07:30:35 IP属地北京 |只看该作者
感谢分享,虽然不甚明白

Rank: 5Rank: 5Rank: 5

UID
537379
帖子
775
PB币
1159
贡献
0
技术
0
活跃
1675
10F
发表于 2016-5-13 08:26:16 IP属地浙江 |只看该作者
弱弱的问一下,为什么要将ESD转换为ISO  ??

Rank: 7Rank: 7Rank: 7

UID
614235
帖子
2694
PB币
1641
贡献
0
技术
4
活跃
1860
11F
发表于 2016-5-13 08:36:46 IP属地天津 |只看该作者
楼主了不起啊

风中之鹰,云上之王!

Rank: 5Rank: 5Rank: 5

UID
3751861
帖子
890
PB币
3034
贡献
0
技术
0
活跃
1819
12F
发表于 2016-5-13 08:37:14 IP属地广西 |只看该作者
技术人员

Rank: 7Rank: 7Rank: 7

UID
4613148
帖子
1326
PB币
2716
贡献
0
技术
5
活跃
2345

远景技术达人

13F
发表于 2016-5-13 09:13:32 IP属地广东 |只看该作者
支持下,哈哈

Rank: 15Rank: 15Rank: 15

UID
4735267
帖子
12076
PB币
301
贡献
0
技术
18
活跃
4562
14F
发表于 2016-5-13 09:38:32 IP属地江苏 |只看该作者
给你个建议,可能有点不合时宜,望谅。
现在已有很成熟的ESD转ISO工具,你把时间花在这上面没有什么意义,做点别人没有做的工具上吧!!

Rank: 7Rank: 7Rank: 7

UID
349777
帖子
2402
PB币
1824
贡献
0
技术
3
活跃
2138
15F
发表于 2016-5-13 09:40:16 IP属地福建 来自手机 |只看该作者
技术,支持!收藏学习!

Rank: 7Rank: 7Rank: 7

UID
2512723
帖子
2894
PB币
9010
贡献
0
技术
307
活跃
2377

热心会员 远景开发达人 远景技术达人

16F
发表于 2016-5-13 10:00:26 IP属地北京 |只看该作者
maolin1027 发表于 2016-5-13 09:38
给你个建议,可能有点不合时宜,望谅。
现在已有很成熟的ESD转ISO工具,你把时间花在这上面没有什么意义, ...

这个是Dism++ API的入门教程……目的是告诉你Dism++ API是怎么样使用的,而不是真的要你去写一个在发出来。

Dism++很久很久很久以前就中国首个发布自主内核实现的ESD转ISO功能,整合到了Dism++中……哪怕是现在,Dism++的ESD转ISO也貌似是中国唯一自主内核实现吧……其他人在用Dism++ API去实现一个,当他傻么?

Rank: 7Rank: 7Rank: 7

UID
2512723
帖子
2894
PB币
9010
贡献
0
技术
307
活跃
2377

热心会员 远景开发达人 远景技术达人

17F
发表于 2016-5-13 10:01:31 IP属地北京 |只看该作者
ySoft 发表于 2016-5-13 08:26
弱弱的问一下,为什么要将ESD转换为ISO  ??

这个是 DIsm++ API使用教程……不是真的要你去写……

Rank: 5Rank: 5Rank: 5

UID
3960944
帖子
1104
PB币
1115
贡献
0
技术
0
活跃
652
18F
发表于 2016-5-13 10:02:57 IP属地山东 来自手机 |只看该作者
不明觉厉。。

Rank: 9

UID
4206830
帖子
2772
PB币
1820
贡献
0
技术
290
活跃
2129

远景技术达人

19F
发表于 2016-5-13 10:05:02 IP属地浙江 |只看该作者
感谢楼主无私奉献。

Rank: 7Rank: 7Rank: 7

UID
4615898
帖子
2965
PB币
4269
贡献
0
技术
0
活跃
2616
20F
发表于 2016-5-13 10:15:13 IP属地海南 |只看该作者
感谢楼主分享技术教程。
回顶部
Copyright (C) 2005-2024 pcbeta.com, All rights reserved
Powered by Discuz!  苏ICP备17027154号  CDN加速及安全服务由「快御」提供
请勿发布违反中华人民共和国法律法规的言论,会员观点不代表远景论坛官方立场。
远景在线 | 远景论坛 | 苹果论坛 | Win11论坛 | Win10论坛 | Win8论坛 | Win7论坛 | WP论坛 | Office论坛