有没有人知道这个win7激活cw.exee文件到底是什么···

1569人阅读
注:转帖请包函作者信息.(作者:菜新)
鄙视下百度空间,他姥姥...竟然限量字符40000字节!靠....
一年前初学VB时我对这个API就特感兴趣,听说这个API可以更改图标资源,就更感兴趣了,后来试了试,发现修改其它资源貌似没多大问题,唯独修改图标时无果,我发现所修改的图虽说已经写入到资源文件中了,但是就是无法显示。后来到网上查了下,发现用UpdateResource修改EXE图标的没一个成功的,大致都是发生成功写入,无法正常显示的问题。罢矣,当时就琢磨着把该问题先放放,等日后有时间再好好折腾。
无奈时间过得太快,忽忽悠悠就过了一年了,前几天,在整理去年的一些源码时发现了这个遗留在硬盘中的代码,一年前无奈自己所学浅溥,啥都不知道,但现在已经对API有了较深厚的认识,再加上对汇编的一些了解,我想此时不解决更待何时。
在折腾这个API的期间也发生不少问题,最让我自责的就是差点被 CreateFile 这个API给Game Over,这个小伟知道(又是小伟?没办法啊,谁要咱和小伟太有缘了~)。还好自己最终醒悟,否则真的要好好鄙视鄙视自己。最初修改时还是和一年前一个样,这时我一直在回想一样年遇到这个问题的问题:所写图标的数据是不是完整的写到了资源文件中?想到此,我用eXeScope(一个PE资源文件查看工具)看了下写入到资源文件中的十六进制,又用UltraEdit-32以十六进制查看ico文件中的数据,发现没问题啊?一字节一字节都对得上,那问题出在哪了?没法,继续在Google游荡,终于找了一份有效的资料(网址现在不知扔哪去了),全E文,看得难受,不过大致的意思是说ICON是由一个结构组成,同PE那些什么NT头,DOS头的差不多,而所显示的图像数据包函于ICON类型结构的dwImageOffset偏移处。呵,这下总算搞明白为什么直接把ICON文件写入到资源文件中显示不了的问题了,也就是说在dwImageOffset偏移位置处才是咱所需要的图像数据,这不就啥都OK了么,爷爷的,原来咱从一开始就被ICON文件整得稀里糊涂,靠MS,当然也鄙视下自己的无知。另外还好找到的那份资料有点人性,把结构给咱标出来了,那么现在一切都顺理成章,不说多了,上代码:
===============================================
Delphi Code:
===============================================
//请自行添加到 Type 处
PICONDIRENTRY = ^ICONDIRENTRY;
ICONDIRENTRY = packed record
&&& bWidth: B
&&& bHeight: B
&&& bColorCount: B
&&& bReserved: B
&&& wPlanes: W
&&& wBitCount: W
&&& dwBytesInRes: DWORD;
&&& dwImageOffset: DWORD;
PICONDIR = ^ICONDIR;
ICONDIR = packed record
&&& idReserved: W
&&& idType: W
&&& idCount: W
&&& idEntries: ICONDIRENTRY;
PGRPICONDIRENTRY = ^GRPICONDIRENTRY;
GRPICONDIRENTRY = packed record
&&& bWidth: B
&&& bHeight: B
&&& bColorCount: B
&&& bReserved: B
&&& wPlanes: W
&&& wBitCount: W
&&& dwBytesInRes: DWORD;
&&& nID: W
PGRPICONDIR = ^GRPICONDIR;
GRPICONDIR = packed record
&&& idReserved: W
&&& idType: W
&&& idCount: W
&&& idEntries: GRPICONDIRENTRY;&
//////////////////////////////////////////////
//函数说明:修改EXE图标
//参&&& 数:IconFile 图标文件&
//&&&&&&&&&&&&& ExeFile 被修改的EXE文件
//返回值: 成功为True,否则False
/////////////////////////////////////////////
function ChangeExeIcon(IcoFile, ExeFile: string): B
stID: ICONDIR;
stGID: GRPICONDIR;
pGrpIcon: PBYTE;
pIcon: PBYTE;
hUpdate: DWORD;
nSize, nGSize: DWORD;&
dwReserved: DWORD;&
Result := F
hFile := CreateFile(PChar(IcoFile), GENERIC_READ, 0, nil, OPEN_EXISTING,
&&&&&&&&&&&&&&&&&&&&& FILE_ATTRIBUTE_NORMAL, 0);
if hFile = INVALID_HANDLE_VALUE then
try&&&&&&&&&&&&&&&&&&&&&&
&&& ReadFile(hFile, stID, Sizeof(ICONDIR), dwReserved, nil);
&&& nSize := stID.idEntries.dwBytesInR
&&& GetMem(pIcon, nSize);
&&& SetFilePointer(hFile, stID.idEntries.dwImageOffset, nil, FILE_BEGIN);
&&& ReadFile(hFile, pIcon^, nSize, dwReserved, nil);
&&& stGID.idType := 1;
&&& stGID.idCount := stID.idC
&&& stGID.idReserved := 0;
&&& CopyMemory(@stGID.idEntries.bWidth, @stID.idEntries.bWidth, 12);
&&& stGID.idEntries.nID := 0;
&&& nGSize := Sizeof(GRPICONDIR);
&&& GetMem(pGrpIcon, nGSize);
&&& CopyMemory(pGrpIcon, @stGID, nGSize);
&&& hUpdate := BeginUpdateResource(PChar(ExeFile), False);
&&&&& ret := UpdateResource(hUpdate, RT_GROUP_ICON, MAKEINTRESOURCE(1), 0, pGrpIcon, nGSize);
&&&&& ret := UpdateResource(hUpdate, RT_ICON, MAKEINTRESOURCE(1), 0, pIcon, nSize);
&&& finally
&&&&& EndUpdateResource(hUpdate, False);
&&& CloseHandle(hFile);
===============================================
===============================================
Option Explicit
Private Declare Function CreateFile Lib &kernel32& Alias &CreateFileA& (ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, lpSecurityAttributes As Any, ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long,
ByVal hTemplateFile As Long) As Long
Private Declare Function ReadFile Lib &kernel32& (ByVal hFile As Long, lpBuffer As Any, ByVal nNumberOfBytesToRead As Long, lpNumberOfBytesRead As Long, lpOverlapped As Any) As Long
Private Declare Function SetFilePointer Lib &kernel32& (ByVal hFile As Long, ByVal lDistanceToMove As Long, lpDistanceToMoveHigh As Long, ByVal dwMoveMethod As Long) As Long
Private Declare Function BeginUpdateResource Lib &kernel32& Alias &BeginUpdateResourceA& (ByVal pFileName As String, ByVal bDeleteExistingResources As Long) As Long
Private Declare Function UpdateResource Lib &kernel32& Alias &UpdateResourceA& (ByVal hUpdate As Long, ByVal lpType As Long, ByVal lpName As Long, ByVal wLanguage As Long, lpData As Any, ByVal cbData As Long) As Long
Private Declare Function EndUpdateResource Lib &kernel32& Alias &EndUpdateResourceA& (ByVal hUpdate As Long, ByVal fDiscard As Long) As Long
Private Declare Function CloseHandle Lib &kernel32& (ByVal hObject As Long) As Long
Private Declare Sub CopyMemory Lib &kernel32& Alias &RtlMoveMemory& (Destination As Any, Source As Any, ByVal Length As Long)
Private Declare Function GetLastError Lib &kernel32& () As Long
Private Const INVALID_HANDLE_VALUE = -1
Private Const GENERIC_READ = &H
Private Const FILE_ATTRIBUTE_NORMAL = &H80
Private Const FILE_BEGIN = 0
Private Const OPEN_EXISTING = 3
Private Const RT_ICON = 3&
Private Const DIFFERENCE As Long = 11
Private Const RT_GROUP_ICON As Long = (RT_ICON + DIFFERENCE)
Private Type ICONDIRENTRY
&&& bWidth As Byte
&&& bHeight As Byte
&&& bColorCount As Byte
&&& bReserved As Byte
&&& wPlanes As Integer
&&& wBitCount As Integer
&&& dwBytesInRes As Long
&&& dwImageOffset As Long
Private Type ICONDIR
&&& idReserved As Integer
&&& idType As Integer
&&& idCount As Integer
&&& 'idEntries As ICONDIRENTRY
Private Type GRPICONDIRENTRY
&&& bWidth As Byte
&&& bHeight As Byte
&&& bColorCount As Byte
&&& bReserved As Byte
&&& wPlanes As Integer
&&& wBitCount As Integer
&&& dwBytesInRes As Long
&&& nID As Integer
Private Type GRPICONDIR
&&& idReserved As Integer
&&& idType As Integer
&&& idCount As Integer
&&& idEntries As GRPICONDIRENTRY
'//////////////////////////////////////////////
'//函数说明:修改EXE图标
'//参&&& 数:IconFile 图标文件
'//&&&&&&&&&&&&& ExeFile 被修改的EXE文件
'//返回值: 成功为True,否则False
'/////////////////////////////////////////////////////
Private Function ChangeExeIcon(ByVal IconFile As String, ByVal ExeFile As String) As Boolean
&&& On Error GoTo cw
&&& Dim stID As ICONDIR
&&& Dim stIDE As ICONDIRENTRY
&&& Dim stGID As GRPICONDIR
&&& Dim hFile As Long
&&& Dim pIcon() As Byte, pGrpIcon() As Byte
&&& Dim nSize As Long, nGSize As Long
&&& Dim dwReserved As Long
&&& Dim hUpdate As Long
&&& Dim ret As Long
&&& hFile = CreateFile(IconFile, GENERIC_READ, 0, ByVal 0&, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0)
&&& If hFile = INVALID_HANDLE_VALUE Then Exit Function
&&& ret = ReadFile(hFile, stID, Len(stID), dwReserved, ByVal 0&)
&&& If ret = 0 Then GoTo cw
&&& ret = ReadFile(hFile, stIDE, Len(stIDE), dwReserved, ByVal 0&)
&&& nSize = stIDE.dwBytesInRes
&&& ReDim pIcon(nSize - 1)
&&& SetFilePointer hFile, stIDE.dwImageOffset, ByVal 0&, FILE_BEGIN
&&& ret = ReadFile(hFile, pIcon(0), nSize, dwReserved, ByVal 0&)
&&& If ret = 0 Then GoTo cw
&&& With stGID
&&&&&&& .idType = 1
&&&&&&& .idCount = stID.idCount
&&&&&&& .idReserved = 0
&&&&&&& CopyMemory stGID.idEntries, stIDE, 12
&&&&&&& .idEntries.nID = 0
&&& End With
&&& nGSize = Len(stGID)
&&& ReDim pGrpIcon(nGSize - 1)
&&& CopyMemory pGrpIcon(0), stGID, nGSize
&&& hUpdate = BeginUpdateResource(ExeFile, False)
&&& ret = UpdateResource(hUpdate, RT_GROUP_ICON, 1, 0, pGrpIcon(0), nGSize)
&&& ret = UpdateResource(hUpdate, RT_ICON, 1, 0, pIcon(0), nSize)
&&& EndUpdateResource hUpdate, False
&&& If ret = 0 Then GoTo cw
&&& ChangeExeIcon = True
&&& CloseHandle hFile
End Function
===============================================
VC++ Code:
===============================================
#include &stdio.h&
#include &windows.h&
#include &tchar.h&
struct ICONDIRENTRY
&&& BYTE bW
&&& BYTE bH
&&& BYTE bColorC
&&& BYTE bR
&&& WORD wP
&&& WORD wBitC
&&& DWORD dwBytesInR
&&& DWORD dwImageO
struct ICONDIR
&&& WORD idR
&&& WORD idT
&&& WORD idC
&&& //ICONDIRENTRY idE
struct GRPICONDIRENTRY
&&& BYTE bW
&&& BYTE bH
&&& BYTE bColorC
&&& BYTE bR
&&& WORD wP
&&& WORD wBitC
&&& DWORD dwBytesInR
&&& WORD nID;
struct GRPICONDIR
&&& WORD idR
&&& WORD idT
&&& WORD idC
&&& GRPICONDIRENTRY idE
//////////////////////////////////////////////
//函数说明:修改EXE图标
//参&&& 数:IconFile 图标文件&
//&&&&&&&&&&&&& ExeFile 被修改的EXE文件
//返回值: 成功为True,否则False
/////////////////////////////////////////////
bool ChangeExeIcon(LPWSTR IconFile, LPWSTR ExeFile)
&&& ICONDIR stID;
&&& ICONDIRENTRY stIDE;
&&& GRPICONDIR stGID;
&&& HANDLE hF
&&& DWORD nSize, nGSize, dwR
&&& HANDLE hU
&&& PBYTE pIcon, pGrpI
&&& hFile = CreateFile(IconFile, GENERIC_READ, NULL, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
&&& if (hFile == INVALID_HANDLE_VALUE)
&&& ZeroMemory(&stID, sizeof(ICONDIR));
&&& ret = ReadFile(hFile, &stID, sizeof(ICONDIR), &dwReserved, NULL);
&&& ZeroMemory(&stIDE, sizeof(ICONDIRENTRY));
&&& ret = ReadFile(hFile, &stIDE, sizeof(ICONDIRENTRY), &dwReserved, NULL);
&&& nSize = stIDE.dwBytesInR
&&& pIcon = (PBYTE)malloc(nSize);
&&& SetFilePointer(hFile, stIDE.dwImageOffset, NULL, FILE_BEGIN);
&&& ret = ReadFile(hFile, (LPVOID)pIcon, nSize, &dwReserved, NULL);
&&& if (!ret)
&&&&&& CloseHandle(hFile);
&&& ZeroMemory(&stGID, sizeof(GRPICONDIR));
&&& stGID.idCount = stID.idC
&&& stGID.idReserved = 0;
&&& stGID.idType = 1;
&&& CopyMemory(&stGID.idEntries, &stIDE, 12);
&&& stGID.idEntries.nID = 0;
&&& nGSize = sizeof(GRPICONDIR);
&&& pGrpIcon = (PBYTE)malloc(nGSize);
&&& CopyMemory(pGrpIcon, &stGID, nGSize);
&&& hUpdate = BeginUpdateResource(ExeFile, false);
&&& ret = UpdateResource(hUpdate, RT_GROUP_ICON, MAKEINTRESOURCE(1), 0, (LPVOID)pGrpIcon, nGSize);
&&& ret = UpdateResource(hUpdate, RT_ICON, MAKEINTRESOURCE(1), 0, (LPVOID)pIcon, nSize);
EndUpdateResource(hUpdate, false);
&&& if (!ret)
&&&&&& CloseHandle(hFile);
&&& CloseHandle(hFile);
===============================================
===============================================
.model flat,stdcall
option casemap:none
include windows.inc
include user32.inc
includelib user32.lib
include kernel32.inc
includelib kernel32.lib
ICONDIRENTRY STRUCT
&&& bWidth BYTE ?
&&& bHeight BYTE ?
&&& bColorCount BYTE ?
&&& bReserved BYTE ?
&&& wPlanes WORD ?
&&& wBitCount WORD ?
&&& dwBytesInRes DWORD ?
&&& dwImageOffset DWORD ?
ICONDIRENTRY ENDS
ICONDIR STRUCT
&&& idReserved WORD ?
&&& idType WORD ?
&&& idCount WORD ?
&&& ;idEntries ICONDIRENTRY &&
ICONDIR ENDS
GRPICONDIRENTRY STRUCT
&&& bWidth BYTE ?
&&& bHeight BYTE ?
&&& bColorCount BYTE ?
&&& bReserved BYTE ?
&&& wPlanes WORD ?
&&& wBitCount WORD ?
&&& dwBytesInRes DWORD ?
&&& nID&& WORD ?
GRPICONDIRENTRY ENDS
GRPICONDIR STRUCT
&&& idReserved WORD ?
&&& idType WORD ?
&&& idCount WORD ?
&&& idEntries GRPICONDIRENTRY &&
GRPICONDIR ENDS
szIcon&& db 'a.ico', 0
szFile&& db 'a.exe', 0
//////////////////////////////////////////////
//函数说明:修改EXE图标
//参&&& 数:IconFile 图标文件&
//&&&&&&&&&&&&& ExeFile 被修改的EXE文件
//返回值: 成功为True,否则False
/////////////////////////////////////////////
_ChangeExeIcon proc IconFile, ExeFile
&&&& local @stID:&& ICONDIR
&&&& local @stIDE:&& ICONDIRENTRY
&&&& local @stGID:&& GRPICONDIR
&&&& local @hFile:&& DWORD
&&&& local @dwReserved: DWORD
&&&& local @nSize:&& DWORD
&&&& local @nGSize:&& DWORD
&&&& local @pIcon:&& DWORD
&&&& local @pGrpIcon: DWORD
&&&& local @hUpdate:&& DWORD
&&&&& local @ret:&& DWORD
&&&& invoke CreateFile, IconFile, GENERIC_READ, NULL, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL
&&&& mov @hFile, eax
&&&& .if eax == INVALID_HANDLE_VALUE
&&&&&&&&& xor eax, eax
&&&&&&&&& ret
&&&& .endif
&&&& invoke RtlZeroMemory, addr @stID, sizeof @stID
&&&& invoke ReadFile, @hFile, addr @stID, sizeof @stID, addr @dwReserved, NULL
&&&& invoke RtlZeroMemory, addr @stIDE, sizeof @stIDE
&&&& invoke ReadFile, @hFile, addr @stIDE, sizeof @stIDE, addr @dwReserved, NULL
&&&& push @stIDE.dwBytesInRes
&&&& pop @nSize
&&&& invoke GlobalAlloc, GPTR, @nSize&
&&&& mov @pIcon, eax
&&&& invoke SetFilePointer, @hFile, @stIDE.dwImageOffset, NULL, FILE_BEGIN
&&&& invoke ReadFile, @hFile, @pIcon, @nSize, addr @dwReserved, NULL
&&&& cmp eax, 0
&&&& je err
&&&& invoke RtlZeroMemory, addr @stGID, sizeof @stGID
&&&& push @stID.idCount
&&&& pop @stGID.idCount
&&&& mov @stGID.idReserved, 0
&&&& mov @stGID.idType, 1
&&&& invoke RtlMoveMemory, addr @stGID.idEntries, addr @stIDE, 12
&&&& mov @stGID.idEntries.nID, 0
&&&& mov @nGSize, sizeof @stGID
&&&& invoke GlobalAlloc, GPTR, @nGSize
&&&& mov @pGrpIcon, eax
&&&& invoke RtlMoveMemory, @pGrpIcon, addr @stGID, @nGSize
&&&& ;开始修改
&&&& invoke BeginUpdateResource, ExeFile, FALSE
&&&& mov @hUpdate, eax
&&&& invoke UpdateResource, @hUpdate, RT_GROUP_ICON, 1, 0, @pGrpIcon, @nGSize
&&&& invoke UpdateResource, @hUpdate, RT_ICON, 1, 0, @pIcon, @nSize
&&&& mov @ret, eax
&&&& invoke EndUpdateResource, @hUpdate, FALSE
&&&& .if @ret == FALSE
&&&&&&&&& jmp err
&&&& .endif
&&&& ;成功后到此一日游
&&&& invoke GlobalFree, @pIcon
&&&& invoke CloseHandle, @hFile
&&&& mov eax, 1
&&&& ;失败后到此一日游
&&&& invoke GlobalFree, @pIcon
&&&& invoke CloseHandle, @hFile
&&&& xor eax, eax
_ChangeExeIcon endp
;==========================程序入口=============================
&&&& invoke _ChangeExeIcon, offset szIcon, offset szFile
&&&& invoke ExitProcess, NULL
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:418108次
积分:7096
积分:7096
排名:第2097名
原创:249篇
转载:319篇
评论:64条
(6)(15)(4)(4)(12)(6)(9)(12)(7)(9)(21)(21)(7)(9)(8)(6)(24)(1)(51)(1)(2)(11)(15)(10)(16)(22)(9)(1)(23)(4)(2)(4)(10)(15)(9)(1)(1)(10)(30)(4)(12)(1)(2)(1)(1)(2)(18)(12)(7)(1)(1)(8)(17)(3)(3)(7)(5)(2)(18)(18)(3)(1)有没有人能把LOL文件中的broadcasting.exe打包发给我。_百度知道
有没有人能把LOL文件中的broadcasting.exe打包发给我。
GamePlus\Apps\LQT\Cross\英雄联盟&#92,或者把&#92急求;Bin这个文件打包给我
提问者采纳
首先你需要把你的收件地址私信给我,我才能给你发。
提问者评价
谢谢我重下了四遍游戏能玩了
来自团队:
其他类似问题
为您推荐:
lol的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁汇编最小的exe文件_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
汇编最小的exe文件
上传于||文档简介
&&汇​编​最​小​的​e​x​e​文​件
大小:5.71KB
登录百度文库,专享文档复制特权,财富值每天免费拿!
你可能喜欢有没有人知道这个CW.exe文件到底是什么···_百度知道
有没有人知道这个CW.exe文件到底是什么···
我有更好的答案
亲,你好,EXE格式的视频有两种情况: 1种是专业视频,它是将正常的视频软件经过一定压缩后利用程序运行,这种视频通常运用于游戏。 除了内部专业软件,网上应该还没有转换回普通格式的软件。 不过有种方法可以从另一方面下手,因为这种视频经常是全屏运行,那么就可以用捕屏软件进行屏幕录制。 1种是FLASH视频,FLASH视频有两种格式,swf以及exe,可以用FLASH转换器将FLSAH转换成普通格式的媒体文件,再通过视频转换器转换成mp4文件。 FLASH转换器有两种。 一种是解码转换器,通过解码将FLASH的视频和音频同时转换,转换效果非常的好,但这种软件目前国内应该还没有,属于国外软件范畴。 二种是录制转换器,就是软件自身对FLASH进行视频以及音频的录制,这就对你系统的声卡有要求了,在录制的时候需要停止其他...
其他类似问题
为您推荐:
exe文件的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁查看: 11378|回复: 4
人气0 技术0 资源0 推广0 帮助0 威望0 最后登录精华0UID306475阅读权限10帖子积分30金币54 注册时间
, 积分 30, 距离下一级还需 20 积分
积分30金币54 注册时间
参加了一个研究生考前辅导班,辅导班提供了教学视频,但是一定要使用它专门的播放器才可以观看,公司电脑管控很严,不能下载安装,我想安装在手机里,但是,因为安装程序为EXE程序,所以无法观看视频,不知道有没有高人可以帮我把这个文件转换为APK的呢?
安卓论坛 - 论坛版权1、本主题所有言论和图片纯属会员个人意见,与本论坛立场无关
2、本站所有主题由该帖子作者发表,该帖子作者与享有帖子相关版权
3、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和的同意
4、帖子作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任
5、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
6、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
7、管理员和版主有权不事先通知发贴者而删除本文
人气0 技术0 资源0 推广0 帮助3 威望0 最后登录精华0UID316181阅读权限0帖子积分1371金币2073 注册时间
积分1371金币2073 注册时间
提示: 作者被禁止或删除 内容自动屏蔽
人气0 技术0 资源0 推广0 帮助0 威望0 最后登录精华0UID175596阅读权限20帖子积分63金币0 注册时间
, 积分 63, 距离下一级还需 117 积分
积分63金币0 注册时间
果然有研究生的水准………
人气0 技术0 资源0 推广0 帮助0 威望0 最后登录精华0UID1227378阅读权限20帖子积分54金币101 注册时间
, 积分 54, 距离下一级还需 126 积分
积分54金币101 注册时间
你的要求没法实现的。除非提取视频,并转换成g2能播放的格式
人气0 技术0 资源0 推广0 帮助0 威望0 最后登录精华0UID40029阅读权限0帖子积分33金币53 注册时间
积分33金币53 注册时间
提示: 作者被禁止或删除 内容自动屏蔽
Powered by}

我要回帖

更多关于 cw.exe 应用程序错误 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信