在安全环境中的Windows系统上安装应用程序

在安全环境中的Windows系统上安装应用程序,windows,security,deployment,installation,Windows,Security,Deployment,Installation,我经常听到的web应用程序的一个主要优点是部署过程快速、无痛,而且只要安装了浏览器,它甚至可以在最封闭的操作系统中工作。我想知道是否有可能为瘦客户机桌面应用程序(例如用C++编写的应用程序)制作一个轻量级安装程序,而不需要很多用户权限 不幸的是,你的工作与现代操作系统的功能集背道而驰,这些功能集试图让人们难以安装软件。想象一下,如果拥有有限权限的用户可以安装恶意应用程序;这就是我们过去(现在很多)和我们正在努力摆脱的 为不需要很多特权的Windows编写的应用程序将无法在提供给它们的“沙箱”之外

我经常听到的web应用程序的一个主要优点是部署过程快速、无痛,而且只要安装了浏览器,它甚至可以在最封闭的操作系统中工作。我想知道是否有可能为瘦客户机桌面应用程序(例如用C++编写的应用程序)制作一个轻量级安装程序,而不需要很多用户权限

不幸的是,你的工作与现代操作系统的功能集背道而驰,这些功能集试图让人们难以安装软件。想象一下,如果拥有有限权限的用户可以安装恶意应用程序;这就是我们过去(现在很多)和我们正在努力摆脱的

为不需要很多特权的Windows编写的应用程序将无法在提供给它们的“沙箱”之外进行操作

Silverlight或web部署的WPF应用程序就是一个例子


如果它要与您的硬盘、网络共享、注册表、COM端口、复杂的内存操作等交互,它需要一些特权。最起码,它需要为java/silverlight/等框架编写和编译,而java/silverlight/等框架虽然有一个沙箱,但有一套他们已经被允许做的事情。

不幸的是,你正在与现代操作系统的功能集作对,这些功能集试图让人们难以安装软件。想象一下,如果拥有有限权限的用户可以安装恶意应用程序;这就是我们过去(现在很多)和我们正在努力摆脱的

为不需要很多特权的Windows编写的应用程序将无法在提供给它们的“沙箱”之外进行操作

Silverlight或web部署的WPF应用程序就是一个例子


如果它要与您的硬盘、网络共享、注册表、COM端口、复杂的内存操作等交互,它需要一些特权。最起码,它需要为java/silverlight/等框架编写和编译,而java/silverlight/等框架虽然有一个沙箱,但有一套他们已经被允许做的事情。

这取决于你的安装程序将尝试做什么。如果它需要写入受保护的文件夹(如“程序文件”)或注册表的受保护部分(包括HKEY_Local_机器下的任何内容),则它必须以高于受限用户权限的权限运行。如果只是将一些文件放到用户自己的“文档和设置”文件夹中,或者在用户的“开始”菜单中放置快捷方式,那么默认情况下这不是问题

一个棘手的问题是“安全环境”的含义。管理员可以使用组策略来锁定Windows Installer服务,如果这是他们为保护环境所做的工作之一,那么当然会阻止普通用户


另一个可能的问题是UAC认为您的安装需要比实际更高的权限。您可以通过使用应用程序清单来防止这种情况,明确告诉UAC您可以以受限用户身份运行安装。

这取决于您的安装程序将尝试执行的操作。如果它需要写入受保护的文件夹(如“程序文件”)或注册表的受保护部分(包括HKEY_Local_机器下的任何内容),则它必须以高于受限用户权限的权限运行。如果只是将一些文件放到用户自己的“文档和设置”文件夹中,或者在用户的“开始”菜单中放置快捷方式,那么默认情况下这不是问题

一个棘手的问题是“安全环境”的含义。管理员可以使用组策略来锁定Windows Installer服务,如果这是他们为保护环境所做的工作之一,那么当然会阻止普通用户


另一个可能的问题是UAC认为您的安装需要比实际更高的权限。你可以通过使用应用程序清单来防止这一点,明确地告诉UAC,安装C++作为一个受限用户是可以的。

这与C++无关。问题不是“用户交互”,而是“用户权限”。你都对。我更新了我的问题。这和C++无关。问题不是“用户交互”,而是用户权限。你都对。我更新了我的问题。