如何删除wince的密码以及拨号等组件?

gooogleman 2009-01-06 03:27:27
加精
请大家帮忙,下面红框的组件怎么删除的,例如密码设置组件
————————————————————————————————————

我刚开始以为是下面这个,可惜不是。删除后密码组件还在


麻烦大家指点一下。
...全文
868 40 打赏 收藏 转发到动态 举报
写回复
用AI写文章
40 条回复
切换为时间正序
请发表友善的回复…
发表回复
tfw_linux 2012-09-07
  • 打赏
  • 举报
回复
觉得很可能和配置文件有关 没做过 猜测
gooogleman 2009-02-14
  • 打赏
  • 举报
回复
[Quote=引用 28 楼 gooogleman 的回复:]
删除了,但是还是这样。
————————————————
这个是和硬件无关,的加载失败无所谓。暂时不管了。
[/Quote]

后来发现这样直接屏蔽会产生一些意想不到的错误。比如点这个会响应那个。估计是数组错位是不行的。后来我使用另外一个代替密码,虽然有两个一样的图标,但是至少不会出现
错位了。哈哈。
SuperMegatron 2009-02-11
  • 打赏
  • 举报
回复
应该要去掉注册表里相应的项
feishanm 2009-02-11
  • 打赏
  • 举报
回复
注册表有没有也要去掉的呢
a766631871 2009-02-10
  • 打赏
  • 举报
回复
看不懂
xjhv001 2009-02-10
  • 打赏
  • 举报
回复
支持提供资源的
bestboy1 2009-02-10
  • 打赏
  • 举报
回复
路过。
tian74yu 2009-02-10
  • 打赏
  • 举报
回复
good
girlchinaboy 2009-02-10
  • 打赏
  • 举报
回复
dddd
xinhuishi3 2009-02-10
  • 打赏
  • 举报
回复
接分
zjwoshi 2009-02-10
  • 打赏
  • 举报
回复
牛人,學習了.
a443049928 2009-02-10
  • 打赏
  • 举报
回复
不知道哦,没弄过
gooogleman 2009-01-07
  • 打赏
  • 举报
回复
删除了,但是还是这样。
————————————————
这个是和硬件无关,的加载失败无所谓。暂时不管了。
gooogleman 2009-01-07
  • 打赏
  • 举报
回复
C:\WINCE500\PUBLIC\WCESHELLFE\OAK\CTLPNL\CTLPNL\cpl.cpp
有如下一些信息
——————————
#define NUMINDICES 2
typedef struct
{
LPCTSTR pszDll; // old dll/cpl name
int rgNewIndex[NUMINDICES];
// index into CPLMAIN of applet that used to be index 0,1 etc in pszDll (old DLL)
}
OLDCMDLINE_CONV;

// -1 == invalid entry
OLDCMDLINE_CONV rgCompat[] =
{
//L"network", 0, -1, // network
L"comm", 0, 1, // communications, dialing
L"main", 2, -1, // keyboard
L"passwrd", 3, 4, // password, owner 现在把这两个都屏蔽掉试试
L"power", 5, -1, // power. [Jshell uses 1 as applet id, which is bogus!]
L"system", 6, -1, // system, remove-pgms(which we dont have yet)
L"screen", 7, 9, // display, stylus
L"sounds", 10,-1, // sounds
L"sipcpl", 11,-1, // SIP
L"clock", 13,-1, // SIP
};
gooogleman 2009-01-07
  • 打赏
  • 举报
回复
3.如何调用.cpl
就像PC机中.dll文件不能直接运行,需要借助rundll32.exe来运行一样,WinCE下的.cpl也需要相应的程序来调用,这个程序就是:"ctlpnl.exe".
比如我们需要调用系统自带的cplmain.cpl的"电源管理",只要在开始菜单的运行中输入:"ctlpnl.exe \windows\cplmain.cpl,5".在路径后面紧跟的"5"只是因为"电源管理"在cplmain.cpl中输入第五个Applet而已.
由此我们不难得出在程序中运用ShellExecuteEx()函数调用控制面板的Applet的方法.以下这段代码,效果和在命令行中输入命令一样,也是调用"电源管理".
SHELLEXECUTEINFO info;
TCHAR szControlPanelCmdLine[ 200 ];
swprintf( szControlPanelCmdLine, L"\\windows\\cplmain.cpl,5");
info.cbSize = sizeof( info );
info.fMask = SEE_MASK_NOCLOSEPROCESS | SEE_MASK_FLAG_NO_UI;
info.lpVerb = NULL;
info.lpFile = TEXT("ctlpnl.exe");
info.lpParameters = szControlPanelCmdLine;
info.lpDirectory = NULL;
info.nShow = SW_SHOW;
info.hInstApp = NULL;
ShellExecuteEx( &info );

如果想调用cplmain.cpl的其它Applet,只要把数字改为相对应的即可.
以下所列的第一项序号为0,接下的为1,其后的继续递增.
0 CPL_Comm
1 CPL_Dialing
2 CPL_Keyboard
3 CPL_Password
4 CPL_Owner
5 CPL_Power
6 CPL_System
7 CPL_Screen
8 CPL_Mouse
9 CPL_Stylus
10 CPL_Sounds
11 CPL_SIP"
12 CPL_Remove
13 CPL_DateTime
14 CPL_Certs
15 CPL_Accessib


4.系统自带控制面板的代码
微软对控制面板的代码是完全公开的,如果安装的是PB4.2,代码可以在"\PUBLIC\WCESHELLFE\OAK\CTLPNL"中找到.
CTLPNL文件夹中有九个文件夹,分别对应不同的CPL文件:
ADVBACKLIGHT:高级背光灯管理
BTHPNL:蓝牙
CONNPNL:拨号网络
CONTROL:主控制台,我们在explorer中看到的"控制面板"应该就是这个
CPLMAIN:会生成cplmain.cpl,控制面板的大多数选项均源自于此
CTLPNL:和CONTROL相关联的
DMPNL:没使用过,不太清楚.不过查看rc文件应该是设置上网的.
INTL2:区域和语言设置
STGUI:存储器管理
——————————————————————————————————————————————————————
在网上找到这个东西,ctlpnl.exe 应该也开源了,看来可以解决问题了。
gooogleman 2009-01-07
  • 打赏
  • 举报
回复
C:\WINCE500\PUBLIC\WCESHELLFE\OAK\CTLPNL\CPLMAIN\cplmain.rc有密码设置的相关信息
————————————————————————————————————————————
//@CESYSGEN IF CPLMAIN_PASSWORD
//
// Password strings
//
STRINGTABLE DISCARDABLE
BEGIN
IDS_PASSWD_NAME "Password"
IDS_PASSWD_DESC "Change owner's password and set security options."
IDS_PASSWD_TITLE "Password Properties"
IDS_PASSWD_TAB "Password Settings"
IDS_PASSWDERR_TITLE "Passwords Do Not Match"
IDS_PASSWDERR_NOTMATCH "Passwords do not match. Please retype identical passwords in both boxes."
END
//@CESYSGEN ENDIF

不过对出现的问题没有帮助。
——————————————————这个东西它是怎么编号的。是在哪里控制密码组件的加载的呢?
gooogleman 2009-01-07
  • 打赏
  • 举报
回复
cplmain.cpl的文件格式类似DLL,不能改,看来要找到相关代码才行哦。
gooogleman 2009-01-07
  • 打赏
  • 举报
回复
//———OK,找到了——这个控制面板图标还有什么CPL文件?!——
//------------------ Find CPL applets ----------------

LRESULT GetCPLFiles(HWND hwndParent, HWND hwndLV)
{
HANDLE h;
WIN32_FIND_DATA fd;
TCHAR sz[MAX_PATH];

// create the large and small image lists for the list view control
himlSmall = ImageList_Create(16, 16, ILC_MASK, 12, 0);
himlLarge = ImageList_Create(32, 32, ILC_MASK, 12, 0);

DEBUGMSG(DEBUG_NOISY, (TEXT("- Searching For CPLs -\r\n")));

h = FindFirstFile(L"\\Windows\\*.cpl", &fd);//
if (h != INVALID_HANDLE_VALUE) {
do {
// update requires complete path
lstrcpy(sz, L"\\Windows\\");
lstrcat(sz, fd.cFileName);
DEBUGMSG(DEBUG_NOISY, (TEXT("Found RAM CPL file='%s' \r\n"),sz));
GetCPLAppletInfo(hwndParent, sz, himlLarge, himlSmall);
} while (FindNextFile(h, &fd));//
FindClose(h);
}
himlLargeOld = ListView_SetImageList(hwndLV, himlLarge, LVSIL_NORMAL);
himlSmallOld = ListView_SetImageList(hwndLV, himlSmall, LVSIL_SMALL);
return TRUE;
}

gooogleman 2009-01-07
  • 打赏
  • 举报
回复
//找到打印信息的地方,按照道理,这个函数应该被调用了多次,继续找
————————————————————————————————————————————————————————
BOOL GetCPLAppletInfo(HWND hwndParent, LPTSTR pszPath, HIMAGELIST himlLarge, HIMAGELIST himlSmall)
{
HINSTANCE hinst = NULL;
APPLET_PROC lpfnCPL;
int i;
WORD cxMiniIcon = GetSystemMetrics(SM_CXSMICON);
WORD cyMiniIcon = GetSystemMetrics(SM_CYSMICON);

if( !(hinst = LoadLibrary(pszPath)) ||
!(lpfnCPL = (APPLET_PROC)GetProcAddress((HMODULE)hinst, c_szCplAppletFunc)) ) {
RETAILMSG(TRUE, (TEXT("CPL: Failed to load '%s'\r\n"), pszPath));//————打印出错信息
goto Error;
}

// Call CPL for Init
lpfnCPL(NULL, CPL_INIT, 0L, 0L);

for(i=0; i<(int)lpfnCPL(NULL, CPL_GETCOUNT, 0L, 0L); i++)
{
NEWCPLINFO Newcpl;
HICON hiconLG, hiconSM;

Newcpl.dwSize = 0L;
Newcpl.dwFlags = 0L;
if(lpfnCPL(NULL, CPL_NEWINQUIRE, i, (LONG)(LPCPLINFO)&Newcpl) == -1)
{
// This is expected & harmless--results from componentization
DEBUGMSG(DEBUG_NOISY, (TEXT("CPL: Failed CPL_NEWINQUIRE for DLL=%s applet %d\r\n"), pszPath, i));
continue;
}

if (Newcpl.dwSize != sizeof(NEWCPLINFO)) {
DEBUGMSG(ERROR_ZONE, (TEXT("CPL: Incompatible struct size from '%s'\r\n"), pszPath));
goto Error;
}

hiconLG = Newcpl.hIcon;
hiconSM = 0;

if (Newcpl.lData) // so a small icon can be loaded (we do not have CopyImage())
hiconSM = (HICON)LoadImage(hinst, MAKEINTRESOURCE(Newcpl.lData),
IMAGE_ICON, cxMiniIcon, cyMiniIcon, LR_DEFAULTCOLOR);

if (! hiconSM || hiconLG == (HICON) 1)
hiconSM = hiconLG;

if (!hiconLG) {
DEBUGMSG(ERROR_ZONE, (TEXT("No Icon found for CPL '%s', Applet '%s'\r\n"),pszPath, Newcpl.szName));
continue;
}else if (hiconLG == (HICON) 1) {
DEBUGMSG(DEBUG_NOISY, (TEXT("Icon=1. Continue...\r\n")));
continue;
}else {
if (ImageList_AddIcon(himlLarge, hiconLG) == -1 ||
ImageList_AddIcon(himlSmall, hiconSM) == -1) {
DEBUGMSG(ERROR_ZONE, (L"Error: Load icon for applet='%s' \r\n", Newcpl.szName));
goto Error;
}
}

DestroyIcon(hiconLG);
DestroyIcon(hiconSM);

if (!GetMoreMem())
goto Error;

rgAppletsData[nCPL_files].nApplet = i;
lstrcpy(rgAppletsData[nCPL_files].szAppletName, Newcpl.szName);
lstrcpy(rgAppletsData[nCPL_files].szDesc, Newcpl.szInfo);
lstrcpy(rgAppletsData[nCPL_files].szDllName, pszPath);
nCPL_files++;
lpfnCPL(NULL, CPL_STOP, i, Newcpl.lData);

DEBUGMSG(DEBUG_NOISY, (TEXT("Found applet='%s' index=%d dllpath=%s \r\n"), Newcpl.szName,nCPL_files, pszPath));
}

lpfnCPL(NULL, CPL_EXIT, 0L, 0L);
if (hinst) FreeLibrary(hinst);
return TRUE;

Error:
switch (GetLastError()) {
case ERROR_OUTOFMEMORY:
case ERROR_NOT_ENOUGH_MEMORY:
MessageBox(hwndParent, CELOADSZ(IDS_OUTOFMEMORY), CELOADSZ(IDS_TITLE), MB_OK|MB_ICONEXCLAMATION);
break;
}
return FALSE;
}
gooogleman 2009-01-07
  • 打赏
  • 举报
回复
————不过新问题来了,
删除之后系统打印出信息
CPL: Failed to load '\Windows\system.cpl'
CTLPNL: cmdline=\Windows\cplmain.cpl,3
--->>>CTLPNL: CPL='\Windows\cplmain.cpl' icon=3 tab=0
——看来要把这个也要删除才行,以及一些编号也要修改一下。
加载更多回复(20)

19,498

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
  • 嵌入开发(WinCE)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧