当我编写需要执行“可管理”操作的应用程序时会发生什么?
就像将文件写入C:\Program Files
一样 - 然后,当应用程序尝试执行此操作时,会发生什么?是否会弹出一条消息,要求用户输入密码?是否会抛出异常?程序会终止并且计算机会爆炸吗?上述所有的? :)
旁注:Windows 7用户默认是否以管理员身份登录?
答案 0 :(得分:7)
通常,Windows Vista和Windows 7不会自动检测到您需要管理员权限,并且不会自动提升您的应用程序。 Microsoft has some guidelines正确请求提升。没有清单的旧应用程序也可能发现自己也是虚拟化的 - 也就是说,您对程序文件的写入可能会被重定向到用户配置文件目录下的目录。
请记住,您应该将特权操作保持在最低限度。 UAC的存在是为了阻止应用程序开发人员请求不必要的管理访问,以提高安全性。应该弄乱程序文件的唯一程序是安装程序。
请注意,Windows 7 / Vista上的管理用户无法在不提升的情况下使用其权限 - 管理员令牌的默认值比默认运行的integrity level高,因此无法访问。如果您尝试执行需要此类访问的操作,您将收到拒绝访问错误;底层API不会抛出任何类型的异常,它们通常会失败并将GetLastError()
设置为ERROR_ACCESS_DENIED
。当然,更高级别的API可能会选择将其转换为抛出异常,或者以暴力方式终止,尽管后者非常粗鲁,并且不太可能出现在任何内置的Windows API中。