如何使用win32从Internet更新程序(exe)

时间:2014-11-08 10:31:34

标签: winapi replace exe uac

我写了一个Win32程序,它定期从互联网上的专用服务器检索内容。

有时Win32程序本身需要更新。我所做的是退出所述程序并运行一个下载程序,它取代了我需要uopdate的主程序。这适用于以管理员模式运行的用户,但不适用于对大多数任务具有足够权限的其他模式。该程序在自己的目录上运行,该目录不在“c:\ Windows \ program files \”下。

我设置了一个清单文件无济于事。

是否有针对此(任何)的可行解决方案?

2 个答案:

答案 0 :(得分:1)

出于安全原因,您无法在没有管理员权限的情况下将文件放入程序文件中。如果你能够做到这一点,你理论上可以更改Windows文件并放置恶意软件。 Linux和OSX系统也是如此。 但是,你可以prompt the user for an Administrator password并以这种方式获得管理员权限。

答案 1 :(得分:1)

您需要更新程序才能拥有管理员权限。您可以通过在应用程序清单的requireAdministrator部分中添加requestedExecutionLevel选项来实现此目的。你说你试过这个无济于事。好吧,你一定有错,因为这是解决方案。你需要坚持下去,直到你的清单正确。

我认为当你说[程序不在Program Files目录下时你引用了更新程序。如果正在更新的程序不在Program Files目录下,那么似乎没有明显的理由说更新程序需要管理员权限。如果是这样,那么你需要进一步调查。