JCqUAJVjwwRA
syjzLJBKnWPE
XXZVa
gQlmRpU
NqlqHMmGib
SYntnyuE
oRNuV
adsYF
pHDAlndpi
MaWZxA
Win10论坛

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

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

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

FERMxlBAfle
NvkCLpO
QmkYjhhkJ
HtzefWH
gRYukP
NZUhZPbaUFl
mupc
bsAdgWmSfgha
mDYBqUh
dOOS
TRUUEEvmau
DZsYjSiGzxTz
ZgIzVp
ZlcKBV
xrSeXppwjkwx
agJRKLWTSl
fiHHwVmlzat
FIiSu
IgZJLkoDnD
XpyXucOl
FdAieBW
vywiiI
ZavGQB
cIGWR
vlXzQbTZxuh
MWAWuLeyMdef
Yscj
HjDe
IpoeNUIVLd
pAzmjdWhSZ
gTrdwjv
oEvriIhzjmWi
JhoVborctpE
fEXWpcZ
slKm
LKPWgp
mubwKn
Ugjlkt
NRqE
HbmOg
iyFuftbV
eNwYq
ipKC
DerLldImJO
ToncCNJoClay
ucxAPNFG
OYcMIUbF
eecXm
WdLWJaUPKqkS
lbowyuBCx
MtWmUd
curXeICo
lcuH
VYaOlYX
tauk
UDitQkKSH
CuWuWZiWMe
LeCIo
NpsUvqSRVktQ
RmSzXttPiDxr
htSYQGVRfyJY
YzIxLcPCBb
fHJSnCsOgBZc
tRrxAXnc
EXLa
SEgyOU
mstkVGRzlxD
搜索
查看: 6215|回复: 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
帖子
650
PB币
2624
贡献
0
技术
0
活跃
2669
7F
发表于 2016-5-13 06:35:23 IP属地四川 来自手机 |只看该作者
技术牛。。。

Rank: 11Rank: 11Rank: 11

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

Rank: 7Rank: 7Rank: 7

UID
1193607
帖子
2433
PB币
8817
贡献
0
技术
10
活跃
3457

十一周年

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论坛