为什么正常的卸载操作不会从注册表中删除值?

马克·博尔德

扩展有关如何从注册表中删除已卸载软件的残留痕迹的信息?-每次我卸载程序,然后再通过RegEdit查找它时,它仍然存在!

为什么大多数Windows应用程序都如此打算在注册表中留下一些小小的痕迹?是Windows的错还是开发人员的错?

卢卡斯·里格(Lukas Rieger)

因为这是不可能的。

注册表有多个根节点,但只有两个有趣的根节点LocalMachineCurrentUser通常,安装程序会将值写入LocalMachine中,而运行的程序仅写入CurrentUser中(实际上,除非安装程序将权限弄乱,否则运行程序将无法写入LocalMachine中。)

正如其他答案所指出的那样,尽管将剩余的内容保留在LocalMachine中是懒惰的,但无法清除用户部分。

如果每台计算机安装了一个程序(最多),并且有多个用户使用该程序,那么卸载程序应该怎么做?它可以安全地删除当前帐户的用户设置,但是当前帐户可能不是您的帐户。(如果从非管理员帐户启动卸载程序,然后输入管理员帐户的凭据,则会发生这种情况-安装程序现在在该帐户下运行,而不是第一个)。

那其他用户呢?它可以尝试枚举所有用户,但可能不会加载其注册表项。(Windows是惰性的,仅加载它需要的东西。)

但是,您甚至都不应该尝试那个。如果您使用漫游配置文件(例如用于终端服务),然后在卸载时删除所有设置,则可能会搞砸并删除实际上仍在使用的内容。

终端服务器基本上是一台Windows计算机,其中多个用户同时登录并使用应用程序。

假设您有两个运行一个应用程序的终端服务器。您在TS1上卸载了该应用程序,现在所有用户的所有设置都在TS2上消失了,因为您具有漫游配置文件。哎呀。

每个用户目录中的文件也是如此。

在我的公司程序的安装程序中,我删除了每台计算机的内容,但不触摸每用户的内容,甚至不涉及当前正在运行安装程序的用户。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Inno setup 卸载程序不会删除重写的注册表值

来自分类Dev

如何在卸载时修改注册表项值而不从wix中的注册表中删除项?

来自分类Dev

无法删除注册表中的值

来自分类Dev

注册表删除值

来自分类Dev

为什么双击批处理文件找不到要删除的注册表值?

来自分类Dev

为什么注册表中的这个ajax不会读取php

来自分类Dev

为什么此尝试更新注册表值失败?

来自分类Dev

使用getRuntime()。exec(cmd)更改注册表项的值不会更改注册表值,即使操作成功结束

来自分类Dev

使用getRuntime()。exec(cmd)更改注册表项的值不会更改注册表值,即使操作成功结束

来自分类Dev

如何删除注册表中的多个值

来自分类Dev

在C#中删除单个注册表值

来自分类Dev

在已安装的MSI卸载中,如何防止注册表删除?

来自分类Dev

在已安装的MSI卸载中,如何防止注册表删除?

来自分类Dev

卸载时注册表未完全删除

来自分类Dev

为什么我不能在私有Docker注册表(v2)中删除图层?

来自分类Dev

从注册表中删除程序

来自分类Dev

在C中更改注册表值

来自分类Dev

在注册表中搜索多个值

来自分类Dev

在注册表子项中搜索值

来自分类Dev

如果折磨SVN叠加层正常工作,Windows注册表中的ShellIconOverlayIdentifiers意味着什么?

来自分类Dev

如果折磨SVN叠加层正常工作,Windows注册表中的ShellIconOverlayIdentifiers意味着什么?

来自分类Dev

什么是“ IsolatedCommand”注册表值?它有什么作用?

来自分类Dev

为什么注册表中不存在WindowsUpdate策略?

来自分类Dev

为什么MDT TaskSequence忽略Winlogon注册表更改?

来自分类Dev

Windows注册表-为什么(和在哪里)存在?

来自分类Dev

为什么参数传递错误的注册表 Windows

来自分类Dev

在Windows注册表中,什么是ProgrammaticAccessOnly字符串值,它如何工作?

来自分类Dev

设置注册表值

来自分类Dev

注册表值访问

Related 相关文章

  1. 1

    Inno setup 卸载程序不会删除重写的注册表值

  2. 2

    如何在卸载时修改注册表项值而不从wix中的注册表中删除项?

  3. 3

    无法删除注册表中的值

  4. 4

    注册表删除值

  5. 5

    为什么双击批处理文件找不到要删除的注册表值?

  6. 6

    为什么注册表中的这个ajax不会读取php

  7. 7

    为什么此尝试更新注册表值失败?

  8. 8

    使用getRuntime()。exec(cmd)更改注册表项的值不会更改注册表值,即使操作成功结束

  9. 9

    使用getRuntime()。exec(cmd)更改注册表项的值不会更改注册表值,即使操作成功结束

  10. 10

    如何删除注册表中的多个值

  11. 11

    在C#中删除单个注册表值

  12. 12

    在已安装的MSI卸载中,如何防止注册表删除?

  13. 13

    在已安装的MSI卸载中,如何防止注册表删除?

  14. 14

    卸载时注册表未完全删除

  15. 15

    为什么我不能在私有Docker注册表(v2)中删除图层?

  16. 16

    从注册表中删除程序

  17. 17

    在C中更改注册表值

  18. 18

    在注册表中搜索多个值

  19. 19

    在注册表子项中搜索值

  20. 20

    如果折磨SVN叠加层正常工作,Windows注册表中的ShellIconOverlayIdentifiers意味着什么?

  21. 21

    如果折磨SVN叠加层正常工作,Windows注册表中的ShellIconOverlayIdentifiers意味着什么?

  22. 22

    什么是“ IsolatedCommand”注册表值?它有什么作用?

  23. 23

    为什么注册表中不存在WindowsUpdate策略?

  24. 24

    为什么MDT TaskSequence忽略Winlogon注册表更改?

  25. 25

    Windows注册表-为什么(和在哪里)存在?

  26. 26

    为什么参数传递错误的注册表 Windows

  27. 27

    在Windows注册表中,什么是ProgrammaticAccessOnly字符串值,它如何工作?

  28. 28

    设置注册表值

  29. 29

    注册表值访问

热门标签

归档