我的应用程序通过另一个名为“updater.exe”的应用程序有一个内置的自我更新系统,该应用程序与要更新的主应用程序位于同一文件夹中。它下载最新版本,终止旧版本(如果它正在运行),然后覆盖它。
问题是,要做到这一点,updater.exe 必须以管理员权限运行才能访问C:\Program Files\MyApp
到目前为止一切顺利,主应用程序以管理员权限(使用 UAC)运行 updater.exe,但随后出现问题:
更新完成后,我希望新安装的版本自动启动。你猜怎么着?当然,主应用程序也以管理员权限运行。场景很简单:
Main app[running as user] --> Updater App[run as admin] --> Main app[ADMIN again]
仅仅因为我的应用程序使用My.Settings
对象,当它以管理员身份运行时它会丢失所有存储的设置,因为通常它总是以普通用户身份启动,并且您可能知道,My.Settings
它是user-sensivite
对象。
我该如何解决这样的问题?我四处搜索,但找不到与“以普通用户身份运行”相关的任何内容,但始终以管理员身份运行,这很容易。
好吧,老实说,另一方面,我认为这样的事情是不可能的,因为更新程序应用程序无法知道哪个特定用户启动了它。或者可以吗?我在这里缺少什么吗?
如果我是对的,那么不使用 My.Settings 而是使用 Windows 注册表来存储用户首选项是唯一的选择吗?
现在谢谢。