32位下 修改注册表(编译后需要使用管理员权限执行 或者先进行提权)
由于是32位的 所以并不会写入到
\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
而是写入到
1
| \SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Run
|
WOW6432Node
下存放在32位程序的注册表内容
img
RegOpenKeyEx(HKEY_LOCAL_MACHINE, reg_path, 0, KEY_ALL_ACCESS|KEY_WOW64_32KEY, &hkey)
在win10虚拟机尝试是 发现还是写入到32位下的注册表中 win7没成功。。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| #include <stdio.h> #include <Windows.h> #pragma warning(disable:4996)
void main() { HKEY hkey; LPCTSTR reg_path = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run"; if (ERROR_SUCCESS != RegOpenKeyEx(HKEY_LOCAL_MACHINE, reg_path, 0, KEY_ALL_ACCESS, &hkey)) { GetLastError();
return ; }
if(ERROR_SUCCESS != RegSetValueEx(hkey, "aaaaaaaaa", 0, REG_SZ, "C:\\AsmDEMO.exe", strlen("C:\\AsmDEMO.exe") + 1)) { RegCloseKey(hkey); GetLastError(); return FALSE; }
RegCloseKey(hkey);
MessageBoxA(0,0,"设置成功",MB_OK); system("pause"); }
|
img
References
https://www.codenong.com/44199379/