你们是否支持在Windows XP上的标准用户?

6
更新:自从开发机器迁移到Vista后,我现在自动以标准用户身份进行测试。随着XP的逐步淘汰,这个问题已经不再那么重要了。
自Windows 2000徽标要求以来,微软一直要求应用程序作为标准用户运行。像其他人一样,我总是将我的桌面设置为管理员用户。并且像每个开发人员一样:我以管理员身份登录、开发、运行和测试。
现在,由于对标准用户的最终支持推动,我一直在测试我的应用程序,通过以普通用户身份运行它们-或者通过RunAs,或者使用[ SaferCreateLevel ] / [ SaferComputeTokenFromLevel ](如果检测到它正在以管理员身份运行,则重新启动具有正常权限的应用程序)。我很快就看到了一些应用程序在Windows XP下作为标准用户时失败的情况(由于我的愚蠢)。我还看到了相同的应用程序在Vista下工作良好(感谢它的众多修复错误的垫片)。
另外:讽刺的是,应用程序更有可能在Vista上作为标准用户运行,而不是在XP上。
问题是,您是否测试您的应用程序以适配标准用户?您是否在XP上以标准用户身份进行开发?您是否忽略标准用户访问并希望一切顺利?
我尝试作为奖励,使我的应用程序重新启动自己作为有限用户(而不是正常用户)。它甚至无法启动- Windows说它无法初始化。因此,这是我未来研究的一个领域:使应用程序支持有限用户。
我特别提到了XP上的标准用户,而不是Vista,以强调Vista与兼容性相关的问题与XP没有任何区别。任何说他们的应用程序在Vista上失败的人必须意识到它也在XP上失败。

我是一名开发人员,不同于其他人,除非必要(通常是为了安装某些东西,但很少),我不会以管理员权限运行。 - kenny
和其他人一样,我总是将我的桌面运行为管理员用户。这恰恰是一种错误的假设,当你最不希望发生时会惨痛失败。 - Piskvor left the building
10个回答

16
我要向您介绍Crispin Cowan的“为Windows标准用户开发的最佳实践”演讲。这个演讲非常值得观看。请查看链接

11
如果您想将应用程序销售给企业,那么是的,必须测试以标准用户身份运行应用程序。如果您的应用程序不能在没有管理员权限的情况下运行,则会使任何企业销售都注定失败。
即使在家庭市场上,许多人也可以并且确实使用受限用户进行日常活动;我知道我就是这样做的。
即使是需要管理员权限的管理应用程序,在作为受限用户运行时也应该表现得明智。它们应该弹出对话框,通知用户需要管理员权限来完成他们试图完成的任务。
尊重这些限制的最佳方法是在具有有限权限的用户下开发软件。这样,每次开发功能时,您都会隐含地测试它是否能在有限环境中运行。
所有这些都不难,只需要一定程度的纪律性-就像所有质量保证程序一样。在*nix上开发非根用户已有数十年。在这方面,Windows开发落后于曲线。

7
他的PDC演讲中,Crispin提出了一个非常好的观点,这是我以前从未考虑过的。
Google Chrome作为标准用户安装:它安装在每个用户文件夹中,无需UAC或OTS提示,而且一切都很用户友好,因为安装是如此简单。不幸的是,它安装在每个用户文件夹中,用户可以对其进行修改。
换句话说:恶意软件可以修改Chrome exe。
现在,Chrome将成为任何恶意软件的最大目标。如果某些恶意软件确实修改了它,Chrome现在将向主机发送您的用户名、密码和信用卡信息,因为这就是新的Chrome exe所做的。
这就是为什么有时候您会希望应用程序安装到受保护的位置。
编辑:整个微软“Click Once”部署计划存在风险。

我对OSX安装程序系统的想法与你相同,该系统允许大多数应用程序在用户帐户中安装。在公司环境中,这总是不好的,因为你无法正确跟踪已安装的内容(以及哪些已过时!)。 - davil
我正在使用“以管理员身份安装,以用户身份运行”的模式。 - Piskvor left the building

5
在商业环境中,大多数用户都是标准的Windows域用户。 忽视标准用户合规性测试是一个非常糟糕的举动。 这会让每个需要安装您的应用程序的域管理员非常生气,并且他们会转向您的竞争对手。

5

我通常作为有限用户在XP上运行,并将其设置为默认选项。(在Vista上,我使用管理员帐户并依赖UAC。)

我以有限用户身份进行开发。Java和Visual Studio开发中几乎没有需要更多权限的内容。

如果我需要在有限帐户下以管理员权限运行某些内容,我会使用MakeMeAdmin(重命名和调整为ConsoleMeAdmin).bat脚本创建一个管理员控制台会话。

如果我确实需要成为管理员才能安装软件并首次运行,以便我的安全软件可以自动适应新代码的网络访问权限(或不允许),等等,则会将我的有限用户帐户提升为管理员,然后重新启动该帐户作为有限用户。除了Windows更新外,我所有的下载都是以有限用户身份进行的,然后在提升为管理员后离线安装。

由于我只有一个小型工作组LAN,没有Active Directory,因此在XP上唯一有用的帐户类型是管理员和有限用户。(我在开始使用XP时尝试过power user,但发现我可以不用它,并且我更喜欢它教给我的关于不依赖特殊权限的代码构建的知识。)

[附言:我还默认启用了我的XP系统上支持硬件的数据执行保护,你会惊讶于它发现了什么。]


它们都是不错的答案,但我最喜欢这个。 - Ian Boyd

3

在我看来,在管理员帐户下进行开发不仅没有必要,而且非常危险!假设在开发过程中你需要查找一些内容(例如stackoverflow),然后你就因此感染了恶意软件,历史数据表明这比你想象的要容易得多,例如通过广告条。作为管理员,这种恶意软件会感染你的计算机,你可能永远都无法摆脱它,甚至可能威胁到你所有的开发工作(可以考虑工业间谍)。

如果你必须以管理员身份运行/测试任何东西,请使用 runas 或者更好的是 虚拟机 - 这样你可以使用具有定义行为的独立系统(在Windows软件中,许多问题来自于库通常仅在开发人员的PC上可用,但几乎在其他任何地方都不可用!)。在Microsoft Virtual PC和VMWare Server等免费软件的时代,甚至没有因为高昂的虚拟化软件价格而找借口。

我曾几年前开发过一些Windows应用程序,除了他们的安装程序之外,没有任何需要管理员权限。运行时设置始终属于用户,而不是机器。

是的,我在家里也以普通用户身份运行Windows XP,我的家人(父母等)也是如此。有时候一些不好的软件需要写入其安装文件夹,但今天安装的应用程序中有95%可以直接使用。


并非所有开发工具始终都可以在没有管理员权限的情况下运行。 - Ian Boyd

2

是的,我们测试过。

也许最简单但也是最被滥用的规则是:不应该做任何需要写入程序安装文件夹的操作。相反,有一个名为应用程序数据的特殊文件夹用于这种操作。


1

是的,我采纳了一般建议,即如果应用程序在XP上以受限用户身份运行良好,则在Vista上运行会更容易。为了实现这一点,并了解是否存在以受限用户身份运行时的任何问题,我使用了LUABuglight

我通常不作为受限用户进行开发,只是作为测试目的登录受限用户。

需要管理员权限并写入其自己的Program Files文件夹的程序数量令人惊讶。老实说,我发现很少有程序能够正确地以受限用户身份运行,无论是来自大型还是小型软件公司。


太对了。我孩子们想要安装的软件几乎总是要求我以管理员身份安装并尝试设置保护,以便他们可以在不作为管理员的情况下运行它。真是太麻烦了! - Ken Gentle

0

有没有人觉得很有趣,Windows开发者认为以管理员身份运行是正常的(显然),但Linux开发者几乎从不以root身份运行?


大多数我所知道的人都使用具有管理员权限的帐户,而不是Admin/root。不幸的是,经过多年需要比默认用户授予更高访问权限的情况后,这已经成为了一种习惯。我希望这不会演变成操作系统宗教战争。 - Tim
我也不同意。一遍又一遍地运行sudo,人们就会放弃。如果它能让我以有限的账户运行,但在需要root权限时自动弹出一些东西,那就太好了。 - Ian Boyd

0
作为一名老式的BOFH,我会对任何要求提升客户端应用程序运行权限的人泼火和丑陋的言语。这根本不可能,自从2001-2002年我们从Win9x切换到XP(原文如此)以来就一直是这样。
作为一个新生的开发者,在一个所有XP用户都被强制组策略设为本地管理员,并且更改需要时间而且没有人特别愿意开始的地方,我安装了RunAsAdmin shim,使得我在大多数任务中都可以降级到普通用户,包括开发 - 就像在Vista中一样。如果你在XP上被困为本地管理员,强烈推荐使用它^^

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接