我正在开发一个具有静默更新程序的Windows应用程序,因此可执行文件需要被覆盖。
该应用程序也加载一些.dll
我试图将可执行文件和dll放在应用程序数据文件夹中,但visual studio给我一个关于如何不能让所有用户访问这些文件的警告。
我试图将可执行文件放在应用程序数据文件夹和程序文件夹中的DLL,但应用程序崩溃,因为无法加载DLL。
Qt编译 – 在Windows上使用qmake
使用视图和数据库从Windows 8.1 / Windows Phone 8.1应用程序创build一个dll
有没有办法透明地链接ASP.NET Web窗体aspx文件? (使用文件系统或其他方式)
在windows 7和msvc下编译QT 5.3.2
我怎么能A)删除警告或B)更好地组织一切?
如何防止我的c + +应用程序正在运行时窗户进入睡眠状态?
如何在循环中使用更less的cpu?
用于查看可执行映像加载哪些文件/ dll的实用程序
在Windows中编译.so
使用GAC。 据我所知,如果您将二进制文件捆绑为数字签名的程序集,则GAC将允许进行静默安装和“升级”。 (在这里,安全性是公钥的一部分,因此在GAC中结束,只要签名,“恶意软件”程序集就不能冒充已签名的程序集)
使用基于MSI的安装程序:同样,初始管理安装后,MSI安装程序将允许将补丁无提示安装到现有的数字签名内容。 这里的安全性是管理员首先给予安装许可的。 已签名的补丁MSI可以被确认来自同一个发布者,所以MSI不需要重新提示权限)。
将主要二进制文件安装到UAC提升的共享位置。 将修补程序二进制文件存储在每个用户文件夹中。 这可以防止非管理员用户覆盖其他文件。 有潜在的一些冗余,但如此。
最后(至少),创建自己的文件夹,几乎任何你想要的。 在创建时,从Windows安全的角度来看,软件是新文件夹的所有者,作为所有者,您有隐式权限来调整新文件夹的ACL。 因此,以用户或管理员身份运行的初始安装过程(可以成功创建文件夹)可以调整文件夹的ACL,以使“用户”组具有可继承的R / W访问权限。 所有用户随后在文件夹中创建的所有文件都可以被所有用户读取和写入(除了guest(并且你真的不想给guest用户写任何东西)。
最后一个选项是安全问题,因为常规用户不应该能够影响其他用户的执行环境。 “用户R / W访问”是指普通用户可以安装木马或以其他方式篡改系统上的其他用户数据,实质上,将所有用户提升为临时管理员。
更安全的角度是,在初始安装期间,将更新代理安装为服务。 在每个用户帐户上运行的非升级软件将使用某种类型的IPC连接到作为SYstem运行的服务,该服务将有权在用户帐户无权访问的位置更新文件。
这是相当复杂的解决方案,基本上重新发明了轮子 – MSI安装程序使用服务代理组件来执行升级,而不提示UAC。
可执行文件和Dll应该总是进入程序文件。 更新者应该通过UAC处理权限提升。
Chrome也具有静默更新程序,整个可执行文件保存在“用户”文件夹中。 在我的情况下,在Windows 7上,它保存在:C: Users 我的帐户名称 AppData Local Google
你也应该看看Environment.SpecialFolder枚举。
如果你想做,Chrome会把它们放在下面
Environment.GetFolderPath(Environment.SpecialFolder.System)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。