"开始"菜单按钮隐藏工具——当前没有可用的电源选项

5次阅读
没有评论

StartMenuButtonHider

"开始"菜单按钮隐藏工具(可以隐藏电源按钮,用户图标等等)

可以作为一个整蛊小程序?(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 页面就可以下载了。

正文完
 0
116博客
版权声明:本篇文章由 116博客 于2024-11-30发表,共计1643字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)
验证码