一个项目需要在wince下开发atl控件,完成后却发现要想让控件正常运行,必须拷贝ATLCE400.DLL、MFCCE400.DLL、OLECE400.DLL到windows目录下面才行,每次开机都要重新拷贝,太麻烦了,本来想修改一个内核,把这几个dll打包到nk.bin中,但同事说修改内核很费时,所以就只能自己想办法。
开始的想法是写一个批处理文件,拷贝这几个dll到windows下,开机自动运行这个bat,到网上查阅到可以通过修改注册表实现,修改如下:
[HKEY_LOCAL_MACHINE/init]
"Launch70"="Storage Card/autocopy.bat"
"Depend70"=hex:/
14,00,1e,00,32,00,3c,00
修改后重启wince,结果没有执行,很是奇怪,后来想到写一个exe程序试试,结果可以实现了,关键代码如下:
CopyFile(_T("Storage Card//ATLCE400.DLL"),_T("windows//ATLCE400.DLL"),FALSE);
CopyFile(_T("Storage Card//MFCCE400.DLL"),_T("windows//MFCCE400.DLL"),FALSE);
CopyFile(_T("Storage Card//OLECE400.DLL"),_T("windows//OLECE400.DLL"),FALSE);
SendMessage(WM_CLOSE,0,0);
前三句是拷贝dll,最后一句是拷贝完自动关闭程序。
修改注册表如下:
[HKEY_LOCAL_MACHINE/init]
"Launch70"="Storage Card/autocopy.exe"
"Depend70"=hex:/
14,00,1e,00,32,00,3c,00
重启wince发现在出现wince桌面时,此程序一闪而过,基本不影响用户的后继操作。