【问题标题】:Change startup Enable / Disable options using .net applications使用 .net 应用程序更改启动启用/禁用选项
【发布时间】:2023-04-09 21:10:02
【问题描述】:

我开发了一个将在系统启动时运行的应用程序。 它在系统启动时运行良好,我可以在System Configuration -> Startup 中看到该应用程序。 启动时显示的所有应用程序都可以启用/禁用。

但我的问题是:是否可以制作无法禁用的应用程序 在启动时?

如何在注册表中控制启动属性?

图像显示了一个在启动时无法禁用的应用程序。

在应用时它会再次启用。

【问题讨论】:

  • 不,你不能也不应该那样做。如果可能的话,没有人愿意使用 Windows。
  • @kennyzx 但有些软件不能像我在图片中描述的那样被禁用
  • @utility 您的意思是说,如果您尝试取消选中 avast 的复选框,它不会取消选中?或者你的意思是如果你取消选中它并单击确定并重新启动它会再次被选中?
  • 也许 Avast 对注册表进行了某种观察。当注册表中的条目发生更改时,avest 会检查它是什么,可能的原因是:检测病毒应用程序。在检查更改时,只需再次启用自己的选项^^
  • 当然 avast 有后台运行服务,可以持续监控您应用的设置等,如果它检测到注册表项被禁用然后自动重新启用它以防止未经授权的注册表修改病毒攻击或出于任何原因,在恢复时,这只是一个重新启用注册表项的“隐藏应用程序”,Windows 中没有自动功能可以做到这一点,你应该自己实现你的简单逻辑注册表监视器。

标签: c# vb.net windows winforms startup


【解决方案1】:

您可以在命令行中使用wmic 创建/删除/列出启动程序。例如,如果您想以 html 格式获取所有启动程序的列表,您可以在命令提示符处运行 wmic startup list /format:htable > startup.html,然后在 Web 浏览器中打开生成的文件。您还可以获取 CSV (wmic startup list /format:csv > startup.csv) 或各种其他格式的表格。
还有创建删除选项可供使用。我相信您可以在 VB.NET 或 C# 中使用 System.Diagnostics.Process.Start 并使用适当的参数来实现您的目标。祝你好运!

【讨论】:

  • 如图部分软件无法禁用
  • @utility 我不知道有什么功能可以实现您在图中显示的功能。我打算提供一些可以提供类似编程功能的东西。
【解决方案2】:

简单的答案。你不能。

但是,您可以对用户隐藏您的启动程序 (MSConfig) 并使其更难以禁用。查看activex startup method 了解更多信息

【讨论】:

  • 在屏幕截图中显示某些软件(如杀毒软件)无法禁用。但其他软件可以启用或禁用
  • 我不确定 avast 是如何做到的(可能是一些 hack)。但我不认为windows默认支持这种行为,因为这会是一个安全问题。
  • 很想知道这一点! :)
【解决方案3】:

这个问题严重搞砸了我的机器。我会把它写成一个警示故事,这样没人会做和我一样愚蠢的事情。

我不认为 OP 声称可以禁用这些复选框是非常可信的。从来没有听说过这样的事情,如果可能的话,肯定会被广泛滥用。它可以工作的唯一方法是当他以普通用户身份登录时,这是陈词滥调,或者通过删除 Admin 组的注册表值的修改权限。所以我决定只是尝试一下,可能会出现什么问题?

运行 Regedit.exe,选择了一个我不关心的条目(Intel shovel-ware)。 Edit + Permissions,首先打破了继承链,这样我就可以控制每个单独值的权限。取消选中完全控制选项,因此仅保留读取访问权限。

那行得通。去恢复权限。并发现了一些我以前不知道的东西。这些权限不适用于值,它们适用于键。事后才明显,但 Regedit 并没有做任何事情来使这一点变得明显。而且我不仅删除了修改权限,还删除了再次更改权限的权限。在所有上的值。

哦,恐怖。我必须修复这个损坏,不知何故,它会在未来轰炸安装人员。唯一仍具有修改权限的帐户是系统帐户。我必须在启动时做一些可怕的事情,也许写一个服务。

这是一个糟糕的,糟糕的想法。如果您知道如何轻松修复此问题,请发表评论。


编辑:我找回了它,通过将密钥的所有者从系统更改为管理员,设法重新获得了控制权。

【讨论】:

  • 如果您使用的是 Win8,则有一个“系统重启”恢复选项。如果您使用的是 Win7,则可以进行系统还原。不知道这两个选项是否可行 - 只是一个想法。
  • 是的,但是如果它们通过这些方法影响我们的系统性能,我们不能禁用软件知道
  • @Hans Passant 在破解未知密钥之前你可以采取一些预防措施。
  • @HansPassant - 您可以使用psexec from SysInternals 使用psexec -i -d -s c:\windows\regedit.exe 在系统帐户下运行regedit。这样做应该可以让你撤消你所做的脏事
猜你喜欢
  • 2018-02-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多