更新:由于开发机器已迁移到Vista,我现在自动作为标准用户进行测试。随着XP逐步淘汰,这个问题不再那么相关了。
由于Windows 2000徽标要求,Microsoft一直要求应用程序作为标准用户运行。像其他人一样,我总是以管理用户的身份运行我的桌面。和每个开发人员一样:我以管理用户身份登录,开发,运行和测试。
现在随着最终支持标准用户的新推动,我一直在以普通用户身份运行它们来测试我的应用程序 - 通过RunAs,或者让我的应用程序使用[SaferCreateLevel][1]
/ {重新启动自己的正常权限{1}}如果它检测到它以管理员身份运行。我很快就看到我的一些应用程序在Windows XP下作为标准用户失败的原因(由于我自己的愚蠢)。我也看到相同的应用程序如何在Vista下运行良好(感谢它为我修复我的错误的众多垫片)。
旁白:具有讽刺意味的是,作为标准用户,应用程序更有可能在Vista上运行,而不是在XP上运行。
问题是您是否测试了应用程序的标准用户兼容性?您是否在XP上作为标准用户开发?您是否忽略了标准用户访问并希望获得最佳效果?
我特别提到XP上的标准用户而不是Vista,以强制执行Vista与兼容性无关的事实。任何说他们的应用程序在Vista上失败的人都必须意识到它在XP上也会失败。
答案 0 :(得分:16)
我要指出Crispin Cowan的“Best Practices for Developing for Windows Standard User”谈话。非常值得一看。
答案 1 :(得分:11)
如果您想将应用程序出售给企业,那么您是必须测试以标准用户身份运行的应用程序。如果您的应用程序无法在没有管理权限的情况下运行,那么这将导致任何销售业务失败。
即使在国内市场,也有很多人可以并确实使用有限的用户来开展日常活动;我知道我这样做。
即使是需要管理权限的管理应用程序,在以受限用户身份运行时也应该表现得很明智。他们应该弹出一个对话框,通知用户需要管理权限来完成他们正在尝试的任何任务。
构建尊重这些限制的软件的最佳方法是在具有有限权限的用户下开发您的软件。这样,每次开发功能时,您都会隐式测试它是否可以在有限的环境中工作。
这一切都很难,只需要一定程度的纪律 - 就像所有质量保证程序一样。几十年来,人们一直在* nix上作为非root用户开发。 Windows开发在这方面落后于曲线。
答案 2 :(得分:7)
Crispin在his PDC talk中提出了一个非常优点,这是我以前从未考虑过的。
Google Chrome以标准用户身份安装:它安装在每个用户文件夹中,无需UAC或OTS提示,并且一切都是用户友好的,因为安装所以很容易。不幸的是,它安装在每用户文件夹中,用户可以在其中修改它。
换句话说: 恶意软件 可以修改Chrome文件夹。
Chrome现在将成为任何恶意软件的最大目标。如果某些恶意软件 对其进行修改,Chrome现在会将您的用户名,密码和信用卡信息发送回家庭,因为这就是新 Chrome exe所做的事情。< / p>
这就是为什么有时希望将应用程序安装到受保护位置的原因。
编辑:整个Microsoft“ Click Once ”部署inititave遭受危险。
答案 3 :(得分:5)
在商业环境中,大多数用户都是标准的Windows域用户。 忽略标准用户合规性测试是一个非常糟糕的举措。 并且您将让每个必须安装您的应用程序的域管理员非常生气,他们将参加您的竞争。
答案 4 :(得分:5)
我几乎在所有时间都以限制用户身份运行XP并作为默认设置。 (在Vista上,我使用管理员帐户并依赖UAC。)
我是一个有限的用户。 Java和Visual Studio开发中几乎没有什么需要更多的权限。
如果我需要在有限帐户下运行但具有管理权限,我使用MakeMeAdmin(重命名并调整为ConsoleMeAdmin).bat脚本来创建管理控制台会话。
如果我真的需要成为管理员才能进行安装并进行首次运行,那么我的安全软件可以自行调整以允许网络访问新代码(或不使用)等,我会提升我的管理员的有限用户帐户足够长时间以完成所有操作,然后再次以受限用户身份重新启动帐户。除了Windows更新,我以受限用户的身份完成所有下载,然后在升级到管理员后离线安装。
因为我只有一个没有Active Directory的小型工作组LAN,所以唯一有用的帐户类型是XP上的Administrator和Limited User。 (当我第一次开始使用XP时,我尝试过高级用户,但发现我可以不使用它而且我更喜欢教我不依赖于我构建的代码中的特殊权限。)
[PS:我的XP系统默认情况下我也有数据执行保护(硬件支持),你会惊讶于它出现了什么。]
答案 5 :(得分:3)
恕我直言,在管理员帐户中开发不仅没有必要,而且非常危险!假设您在开发过程中检查了互联网上的某些内容(想到了stackoverflow)并且您发现了一些恶意软件 - 历史记录显示这比您想象的要容易得多,例如:通过横幅。作为管理员,此恶意软件会感染您的计算机,您可能永远不会将其删除。它甚至可能对您的所有开发工作构成威胁(想想工业间谍活动)!
如果您必须以管理员身份运行/测试任何内容,请使用 runas 或更好的虚拟机 - 这样您就可以使用具有已定义行为的单独系统(批量) Windows软件的问题来自于开发人员PC上当然的库,但几乎没有其他地方!)。在Microsoft Virtual PC和VMWare Server(都是免费的)时代,由于虚拟化软件的高价格,甚至没有任何借口。
几年前我开发了一些Windows应用程序,除了安装程序 NOTHING 之外,还需要管理权限。运行时设置始终属于用户,而不属于计算机。
是的,我也在家里以普通用户身份运行Windows XP,我的家人(父母等)也是如此。有时,一个蹩脚的软件需要对其安装文件夹进行写访问,但到目前为止,所有已安装的应用程序中有95%都是开箱即用的。
答案 6 :(得分:2)
是的,我们测试一下。
可能最简单但最滥用的规则是,您不应该执行任何需要对程序的安装文件夹进行写访问的操作。相反,对于那种事情,有一个名为Application Data
的特殊文件夹。
答案 7 :(得分:1)
是的,我采取了一般性的建议,如果它在XP上以有限的用户运行,那么在Vista上运行应用程序会更容易。为了实现这一点,并且知道是否存在以有限用户身份运行的任何问题,我使用了LUABuglight。
我通常不会以有限的用户身份开发,而只能以有限的用户身份登录进行测试。
需要管理员权限并写入自己的Program Files文件夹的程序数量惊人。说实话,我发现很少有程序可以作为有限的用户正确运行,来自任何软件公司,无论大小。
答案 8 :(得分:0)
其他人觉得有趣的是,Windows开发人员认为以管理员身份运行是正常的(显然),但Linux开发人员几乎从不以root身份运行?
答案 9 :(得分:0)
作为一个旧时的BOFH,我会向任何要求提升其客户端应用程序正常运行权限的人发出火灾和丑陋的话语。这是不可能的,从2001-2002左右开始,我们从Win9x切换到XP(原文如此)。
作为一个新出生的开发人员,XP上的每个人都是强制组策略的本地管理员并且改变它似乎需要时间而且没有人特别倾向于开始 - 我已经安装了 RunAsAdmin < / strong>垫片使我降低到普通用户的大多数任务,包括开发 - 就像在Vista中一样。如果您在XP ^ ^
上遇到本地管理员,建议您使用