我的应用程序有一个内置的自动更新系统,通过另一个名为“updater.exe”的应用程序来实现更新。该程序与主应用程序在同一文件夹中。它会下载最新版本,终止旧版本(如果正在运行),然后进行覆盖。
问题是,为了这样做,必须以管理员权限运行updater.exe才能访问C:\Program Files\MyApp。
到目前为止,主应用程序已使用UAC以管理员权限运行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
是一个用户敏感
的对象。我该如何解决这样的问题?我已经搜索过了,但没有找到与“以普通用户身份运行”有关的任何内容,但总是以管理员身份运行,这很容易。
说实话,在另一方面,我不认为这样的事情可能发生,因为更新程序不能知道哪个特定的用户启动了它。或者可以吗?我有什么遗漏的地方吗?
如果我没错的话,唯一的选择就是不使用
My.Settings
,而是使用Windows注册表来存储用户首选项?谢谢。
<requestedExecutionLevel level="highestAvailable" uiAccess="false" />
? - Top Systems