为什么Windows让你在整个屏幕上画画?

Raz*_*zvi 5 c++ windows winapi gdi

我一直在和DC一起玩CreateDC(L"DISPLAY",NULL,NULL,NULL)得很开心,我一直想知道为什么Windows会让你轻松地在整个屏幕上画画,因为我觉得你可以做一些非常邪恶的东西就像把定时器放在1ms和每次定时器滴答时,在整个屏幕上绘制一个黑色矩形.

Eri*_*lje 33

事实上,你可以做一些非常邪恶的东西并不意味着窗户不应该让你这样做.想想你可以做的所有其他邪恶的事情:

  • 在无限循环中运行并占用所有cpu时间.
  • 将随机位写入文件,直到填满整个硬盘.
  • 删除整个地方的随机文件.
  • 像疯了一样分配内存,直到计算机慢慢爬行.

仅仅因为你可以做那些事情并不意味着Windows应该阻止你写入硬盘驱动器或分配内存或删除文件.

Windows的目的是提供一个可以运行程序的环境.他们创建环境越灵活,开发人员就可以创建更有趣(而且不幸的是,狡猾)的程序.

如果他们开始对你可以做的事情施加任意限制,因为你可能会滥用它......好吧,那就不是windows,它会是iPhone :)

  • 操作系统的目的是管理系统的资源.屏幕是这些资源之一.操作系统限制一个进程可以对另一个进程的资源执行的操作(例如,您通常无法触及另一个进程的地址空间).操作系统保证,即使您有无限循环,其他进程也会获得计划的CPU时间.操作系统可以强制执行磁盘配额和访问权限.工作集限制可防止您耗尽所有物理RAM.即使在UI级别,Windows也会限制应用程序窃取焦点.那么为什么不限制应用可以在屏幕上涂鸦的地方呢? (5认同)

wef*_*fwe 10

为什么Windows让你轻松写入硬盘?

你可以做一些非常邪恶的事情,比如覆盖硬盘上的每个文件.


pol*_*lot 7

桌面的安全性是给运行桌面的用户的,如果您不是特权用户,则无法在桌面上绘制.

请注意,在桌面上通常不会创建CreateDC(),但在WM_PAINT消息处理程序期间通常不会为特定窗口使用GetDC().

程序还可以删除文件系统,或者销毁注册表(如果获得适当的许可),桌面就像任何其他用户一样是用户许可的资源.如果他们使用安全凭证运行应用程序,他们可以按照自己的意愿行事.

然而在实践中,人们会在其中创建一个窗口和绘画.