普通非管理员账户的ClickOnce卸载方法

8
我在我的Win 10专业版电脑上有2个账号,一个带管理员权限,另一个默认没有管理员权限。我可以使用非管理员账户安装用Visual Studio 2016创建的ClickOnce应用程序,这是可行的。但是一旦我尝试从非管理员账户卸载应用程序,就会提示我切换到管理员账户。然而,管理员账户不知道这个应用程序,因此在尝试卸载该应用程序时会出现一些ARP错误而崩溃。陷入死循环!那么我该怎么解决呢?在Visual Studio中是否有一些开关来控制这个问题?

在Windows 7下,非管理员用户可以轻松卸载完全相同的应用程序,而不会出现任何问题。这个问题似乎只适用于Windows 10。 - Peter Vogt
3个回答

11

解决方案是使用控制面板来卸载应用程序。

在那里,我没有问题删除一个非管理员用户安装的应用程序。


这实际上是有效的,但为什么这仍然是个问题? - Chau

4

我曾经遇到过同样的问题(两年后),并且没有注意到“控制面板”和“设置”之间的区别,我想进一步阐述彼得·沃格特的答案:

要在Windows 10上卸载ClickOnce应用程序而不需要管理员权限,请使用旧式应用程序列表,现在标记为程序和功能。不幸的是,这无法直接从开始菜单搜索到,但可以在至少2个地方找到:

  • 直接从旧式控制面板中,作为“卸载程序”。
  • 从新的“设置”->“应用”屏幕(“应用程序和功能”),使用右侧的“程序和功能”链接。

请注意,第二种方法(设置->应用程序->程序)正是OP所抱怨的失败方式。作为非管理员用户,安装任何ClickOnce部署的应用程序。然后尝试通过系统设置中的添加/删除程序来删除该应用程序。这将带您到您上面描述的第二个选项。尝试从那里删除应用程序会弹出UAC对话框,因为它坚持要提升权限。如果您拒绝提升权限,则会中止,如果您提升权限,则会失败,因为该应用程序不存在于管理员用户中。如果不是管理员用户,则老式的控制面板是唯一的方法。 - Jimbo1987
@Jimbo1987 很抱歉回复晚了。你确定我们在谈论同一个问题吗?“程序和功能”链接在设置->应用程序屏幕底部?它仍然会带我到Windows 10中的旧控制面板。而且OP实际上没有指定在哪里找到控制面板,因此我的答案是这样的。 - blanne
啊。确实我们没有在谈论同一件事情。我指的是“设置->应用和功能”右侧面板上的“应用和功能”列表,而你指的是出现在我所提到的列表下方“相关设置”标题下的“程序和功能”链接。确实,你的链接会带你进入那个真正有效的老式列表。感谢澄清。 - Jimbo1987

2
解决方法是直接运行卸载程序,而不是通过Win10中的“添加或删除程序”进行卸载。您可以在注册表键HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall下找到卸载程序命令,搜索应用程序的键,并获取UninstallString的值。如果直接执行该命令,则卸载程序将按预期工作,无需用户权限提升。您需要执行的命令类似于以下内容:
rundll32.exe dfshim.dll,ShArpMaintain MyApp.application, Culture=neutral, PublicKeyToken=0000000000000000, processorArchitecture=msil

我确定这是一种Windows 10的问题,因为它在Windows 7上运行良好。


我同意。在Windows 7中卸载ClickOnce应用程序运行得很好,但在Windows 10中却不行。对于非管理员用户来说,手动卸载应用程序涉及太多步骤。 - Peter Vogt
如果我通过点击“Windows设置”>>“系统”>>“应用和功能”,找到该应用程序并右键单击卸载,它只会要求管理员密码。如果我直接执行rundll32.exe命令,则可以轻松删除该应用程序。这是非管理员用户角色的配置问题吗? - Peter Vogt
5
奇怪的是,如果我通过“控制面板”>>“卸载程序”进行卸载,我的应用程序就可以顺利卸载。只有当我使用设置窗口卸载我的应用程序时,才会要求我切换到管理员用户。 - Peter Vogt
1
@PeterVogt,我想知道你是否解决了这个问题 - 特别是因为我遇到了完全相同的问题?我在MS论坛上看到了你的帖子,我觉得你得到的回复相当令人沮丧。如果确实需要提升权限(这与控制面板方法相反),那么了解需要此权限的确切元素可能非常有用 - 可能是Windows日志条目或类似内容。 - Chau

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接