"开始"菜单按钮隐藏工具(可以隐藏电源按钮,用户图标等等)
可以作为一个整蛊小程序?(bushi
其实还有其他价值,比如,这个程序展示了很多"用 Win32Api 修改注册表的细节(坑)",还有 "MessageBox 的一些用例"
贴一段 32 位程序写 64 位系统注册表的代码吧,注释的地方基本上就是踩过的坑。
int reg_rw(HKEY hKey = NULL, LPCSTR SubKey = NULL, LPSTR ValueName = NULL, DWORD dwType = REG_DWORD, int data = 0,
DWORD dwOptions = REG_OPTION_NON_VOLATILE, REGSAM samDesired = KEY_ALL_ACCESS | KEY_WOW64_64KEY) {
// samDesired 参数需要添加 KEY_WOW64_64KEY ,否则32位程序无法修改64位系统的注册表,会被重定向到 WOW6432Node
// ValueName、dwType、data 是 RegSetValueEx所需的, 分别是 值的名称、类型、数据
// 创建或打开一个键
DWORD dwDisposition; // 定义 dwDisposition 用于接收返回码
auto result = RegCreateKeyEx(hKey, SubKey, 0, NULL, dwOptions, samDesired, NULL, &hKey, &dwDisposition);
cout << "" << endl;
if (ERROR_SUCCESS != result) {
cout << " 创建注册表失败, 错误代码:" << result << endl;
return -1;
}
else {
if (dwDisposition == REG_OPENED_EXISTING_KEY) {
cout << " 已打开一个存在的注册表项: " << hKey << "\\" << SubKey << endl;
}
else if (dwDisposition == REG_CREATED_NEW_KEY) {
cout << " 已新建一个注册表项: " << hKey << "\\" << SubKey << endl;
}
}
// 设置值. 注意, RegSetValue的后两个参数仅适用于 REG_DWORD 类型的值, 其他情况参阅 Win32 api 文档
// RegSetValueEx 必须与 RegCreateKeyEx 或者 RegOpenKeyEx 连用 (因为需要hKey句柄)
RegSetValueEx(hKey, ValueName, 0, REG_DWORD, (LPBYTE)&data, sizeof(DWORD));
// 关闭
RegCloseKey(hKey);
return 0;
}
实现原理
通过 Win32 API 对特定注册表的值 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PolicyManager\default\Start\XXXXXX
进行修改。
当然,使用组策略也可以实现。
不过,考虑到使用家庭版等非专业版系统的用户,程序还是采用注册表修改方式。
因此,运行本程序需要管理员权限,另外若有安全软件拦截,请放行。
软件展示
软件截图
相关视频
最早是录了个视频的,感觉会详细些。
你的电脑暂时不想关机——当前没有可用的电源选项 (开始菜单按钮隐藏教程)【原创/整蛊】
使用方式
双击打开程序,输入对应选项前的序号并按下"Enter"即可。
支持一次输入多个纯数字序号,使用空格隔开。
如果有其他按钮隐藏需要,可以自行修改源码,替换源码中注册表路径的子键
注意事项
本程序已在 Windows 7 / Windows 10 上测试通过。理论上支持 Windows Vista 和 Windows 8,Windows XP 未知。
Win7 及以下版本请使用 StartMenuButtonHider_Win7.exe
,其余版本使用 StartMenuButtonHider.exe
即可。
开源地址&下载链接
Github 或者 Gitee , 到 Release 页面就可以下载了。