精华内容
下载资源
问答
  • 什么是用户界面特权隔离机制

    千次阅读 2012-11-26 16:38:57
    用户界面特权隔离(User Interface Privilege Isolation,简称UIPI),Windows NT 6.0开始引入的技术。其目的在于防止粉碎窗口攻击(英语:Shatter attack)。用户界面特权隔离阻止较低等完整性级别...
    用户界面特权隔离(User Interface Privilege Isolation,简称UIPI),是从Windows NT 6.0开始引入的技术。其目的在于防止粉碎窗口攻击英语Shatter attack。用户界面特权隔离阻止较低等完整性级别(Integrity level)进程的窗口向较高等完整性级别进程的窗口发送消息,但也有一些消息不被阻止。[1] Windows消息是一种进程间通信机制,可被低等完整性级别的恶意软件利用,在较高等完整性级别的进程上下文里执行任意代码,可能允许特权提升。

    介绍

    在早期版本的Windows中,同一个用户帐号下运行的进程共享相同的安全权限。例如,一个线程可以发送窗口信息到另一个线程中的窗口。

    从Windows Vista开始这个并不总能正常工作。新特性权限级别被附加到进程上(也可以是其它特性)。进程不可以将消息窗口发送到具有更高权限级别的进程,尽管他们以运行于同一个用户帐号(例如当前登录用户)。

    通过UIPI(用户界面特权隔离)机制防止来自其它可能更高权限的线程中创建的windows消息进行恶意代码攻击。

    显示UIPI

    此问题在UAC(用户帐户控制)启用时最为清晰(默认情况下是启用的)。

    UAC中,一个管理员登录获取两个令牌对象:第一个是管理员令牌,具有最高权限(类似于Windows Vista以前版本的系统帐号),

                                                                                     第二个令牌是过滤后的版本,带有标准用户权限。

    默认情况下,进程用完整性级别为normal(UIPI 级别分为low,normal,high,和system)的标准用户启动。作为对比,进程使用管理员权限(例如,当用户右击“Run as Administrator”或用”runas”命令调用SheellExecute)使得进程具有high的权限级别。

    如此,系统可以用使单一权限级别运行两种类型的进程(技术上讲用的是同一用户帐号)。UIPI支持低完整性级别(integrity level)的进程和更高级别的进程进行通信。

    使用用Windows Sysinternals 的Process Explorer查看权限级别(http://www.microsoft.com/technet/sysinternals ) ,选择“Integrity Level”列

     

          

                       

    这里有个基于同一图片的两个进程的例子,其中一个用标准用户权限启动另一个使用管理员权限启动。注意他们是不同的完整性级别(integrity level)。

      

    UIPI 施加限制

    较低权限的应用程序不能做如下操作:

    •              验证更高权限进程创建的窗口。调用 SendMessage 或 PostMessage到更高权限进程创建的窗口

    •              使用线程钩子来附加一个更高权限的进程。

    •              使用日志钩子(SetWindowsHookEx) 来监视更高权限的进程

    •              DLL注入到更高权限的进程。

    下列windows消息永远是允许状态:

    •              0x000 - WM_NULL

    •              0x003 - WM_MOVE

    •              0x005 - WM_SIZE

    •              0x00D - WM_GETTEXT

    •              0x00E - WM_GETTEXTLENGTH

    •              0x033 - WM_GETHOTKEY

    •              0x07F - WM_GETICON

    •              0x305 - WM_RENDERFORMAT

    •              0x308 - WM_DRAWCLIPBOARD

    •              0x30D - WM_CHANGECBCHAIN

    •              0x31A - WM_THEMECHANGED

    •              0x313, 0x31B (WM_???)

     

    UIPI 问题的修复

    基于比Windows Vista更早的操作系统的应用程序会需要互相之前能传递消息。Windows Vista 引入了ChangeWindowMessageFilter API,这是已编档方法,用来添加或删除能通过隔离级别的消息。需要允许消息传递到更高权限的进程的窗口时,使用如下方法:

    ChangeWindowMessageFilter(message, MSGFLT_ADD);

    类似的标记MSGFLT_REMOVE从进程允许列表中删除消息。

    Windows 7引入了一个新的函数ChangeWindowMessageFilterEx,相对于控制整个进程它可以在特定窗口控制允许消息:

    BOOL ChangeWindowMessageFilterEx(

        HWND hWnd, UINT message, DWORD action,

        PCHANGEFILTERSTRUCT pChangeFilterStruct

    );

    事件的参数可以是MSGFLT_ALLOW (类似于ChangeWindowMessageFilter中的MSGFLT_ADD ), MSGFLT_DISALLOW (类似于MSGFLT_REMOVE),和 MSGFLT_RESET,将窗口重设成默认筛选器,可选的架构允许操作结果以接收更多的信息。

    原文出处:来自网络
    展开全文
  • )Python的标准Tk GUI工具包的接口.Tk和Tkinter可以在大多数的Unix平台下使用,同样可以应用在Windows和Macintosh系统里.,Tk8.0的后续版本可以实现本地窗口风格,并良好地运行在绝大多数平台中。wxPytho...

    GUI

    python提供了多个图形开发界面的库,几个常用Python GUI库如下:

    Tkinter: Tkinter模块("Tk 接口")是Python的标准Tk GUI工具包的接口.Tk和Tkinter可以在大多数的Unix平台下使用,同样可以应用在Windows和Macintosh系统里.,Tk8.0的后续版本可以实现本地窗口风格,并良好地运行在绝大多数平台中。

    wxPython:wxPython 是一款开源软件,是 Python 语言的一套优秀的 GUI 图形库,允许 Python 程序员很方便的创建完整的、功能键全的 GUI 用户界面。

    Jython:Jython程序可以和Java无缝集成。除了一些标准模块,Jython使用Java的模块。Jython几乎拥有标准的Python中不依赖于C语言的全部模块。比如,Jython的用户界面将使用Swing,AWT或者SWT。Jython可以被动态或静态地编译成Java字节码。

    安装:

    本节介绍如何创建python程序的图形用户界面(GUI),也就是那些带有按钮和文本框的窗口。这里介绍wxPython :

    根据自己的操作系统下载相应版本。

    安装过程非常简单,以win7系统为例,点击下载的exe 文件,保持安装目录与本机的python目录一致就OK了。

    创建并显示一个框架

    importwx

    app=wx.App()

    win=wx.Frame(None)

    win.Show()

    app.MainLoop()

    运行:

    191420257061667.jpg

    我们来创建一个文本编辑器,功能要求如下:

    * 它可以打开给定文件名的文本文件;

    * 它可以编辑文件文件

    * 它可以保存文本文件

    * 它可以正常退出程序

    importwx

    app=wx.App()

    win=wx.Frame(None,title='Simple Editor',size=(410,335))

    win.Show()

    loadButton=wx.Button(win,label='Open',pos=(225,5),size=(80,25))

    saveButton=wx.Button(win,label='Save',pos=(315,5),size=(80,25))

    filename=wx.TextCtrl(win,pos=(5,5),size=(210,25))

    contents=wx.TextCtrl(win,pos=(5,35),size=(390,260),style=wx.TE_MULTILINE|wx.HSCROLL)

    app.MainLoop()

    结果:

    191436060975796.jpg

    更智能的布局

    使用尺寸器

    importwx

    app=wx.App()

    win=wx.Frame(None,title='Simple Editor',size=(410,335))

    bkg=wx.Panel(win)

    loadButton=wx.Button(bkg,label='Open')

    saveButton=wx.Button(bkg,label='Save')

    filename=wx.TextCtrl(bkg)

    contents=wx.TextCtrl(bkg,style=wx.TE_MULTILINE|wx.HSCROLL)

    hbox=wx.BoxSizer()

    hbox.Add(filename,proportion=1,flag=wx.EXPAND)

    hbox.Add(loadButton,proportion=0,flag=wx.LEFT,border=5)

    hbox.Add(saveButton,proportion=0,flag=wx.LEFT,border=5)

    vbox=wx.BoxSizer(wx.VERTICAL)

    vbox.Add(hbox,proportion=0,flag=wx.EXPAND | wx.ALL,border=5)

    vbox.Add(contents,proportion=1,flag=wx.EXPAND | wx.LEFT | wx.BOTTOM | wx.RIGHT,border=5)

    bkg.SetSizer(vbox)

    win.Show()

    app.MainLoop()

    运行结果:

    191455089884088.jpg

    运行这段代码,窗口会和上面的相同,但是使用了相对坐标而不是绝对坐标。

    wx.BoxSizer的构造函数带有一个决定它是水平还是垂直的参数,默认为水平。

    add方法有几个参数,proportion参数根据在窗口改变大小时所分配的空间设置比例。flag参数类似于构造函数中的style参数,可以使用按位或运算符连接构造符号常量。

    事件处理

    上面的界面做好了,但是我们点击按钮不起任何的作用。

    在GUI术语中,用户执行的动作(比如 点击按钮)叫做事件。我们需要让程序注意这些事件并且作出反应。

    假设写了一个负责打开文件的函数,并将其命令为load ,然后就可以像下面这样将函数作为loadButton的事件处理函数:

    loadButton.Bind(wx.EVT_BUTTON,load)

    完成了的程序

    让我们来完成剩下的工作,现在需要的就是两个事件处理函数:load(打开)和save(保存)。当事件被调用时,它会收到一个事件对象作为它唯一的参数,其中包括发生了什么事情的信息,但是在这里可以忽略这方法的事情,因为程序只关心点击时发生的事情。

    defload(event):

    file=open(filename.GetValue())

    contents.SetValue(file.read())

    file.close()

    上节刚刚学过文件的打开/读取,文件名使用filename对象GetValue方法获取。为了将文本引入文本区,只要使用contents.SetValue即可。

    save函数和load类似,除了它需要写入("w’),以及用于文件处理部分的write方法,GetValue用于从文本区获得信息。

    defsave(event):

    file=open(filename.GetValue(),'w')

    file.write(contents.GetValue())

    file.close()

    最终的GUI程序

    importwxdefload(event):

    file=open(filename.GetValue())

    contents.SetValue(file.read())

    file.close()defsave(event):

    file=open(filename.GetValue(),'w')

    file.write(contents.GetValue())

    file.close()

    app=wx.App()

    win=wx.Frame(None,title='Simple Editor',size=(410,335))

    bkg=wx.Panel(win)

    loadButton=wx.Button(bkg,label='Open')

    loadButton.Bind(wx.EVT_BUTTON,load)

    saveButton=wx.Button(bkg,label='Save')

    saveButton.Bind(wx.EVT_BUTTON,save)

    filename=wx.TextCtrl(bkg)

    contents=wx.TextCtrl(bkg,style=wx.TE_MULTILINE|wx.HSCROLL)

    hbox=wx.BoxSizer()

    hbox.Add(filename,proportion=1,flag=wx.EXPAND)

    hbox.Add(loadButton,proportion=0,flag=wx.LEFT,border=5)

    hbox.Add(saveButton,proportion=0,flag=wx.LEFT,border=5)

    vbox=wx.BoxSizer(wx.VERTICAL)

    vbox.Add(hbox,proportion=0,flag=wx.EXPAND | wx.ALL,border=5)

    vbox.Add(contents,proportion=1,flag=wx.EXPAND | wx.LEFT | wx.BOTTOM | wx.RIGHT,border=5)

    bkg.SetSizer(vbox)

    win.Show()

    app.MainLoop()

    运行结果:

    191521223169715.jpg

    使用步骤:

    下面玩转这个小程序步骤:

    1、文本框输入hello8.txt

    2、文本区输入Hello.world!

    3、点击保存(不会有保存成功的提示,但它已经成功了)

    4、关闭编辑器,重新运行打开。

    5、文件框输入hello8.txt ,点击"打开”按钮,上次编辑的内容(Hello.world!)在文本区出现了。

    窗口含有一个"hello’标签按钮,点击hello,会在文本框中显示'Hello,world!'

    importwxdefhello(event):print 'Hello,world!'app=wx.App()

    win=wx.Frame(None,title='Hello,wxPython!',size=(200,100))

    button=wx.Button(win,label='Hello')

    button.Bind(wx.EVT_BUTTON,hello)

    win.Show()

    app.MainLoop()

    展开全文
  • 在上周于西班牙巴塞罗那举办的2010年全球移动大会(MWC)上,微软正式宣布了Windows Phone 7,除了新的用户界面Metro,它还整合了微软的其他产品,比如Xbox Live游戏和Zune影音。 微软透露,其实在两年前就开始了对...

    在上周于西班牙巴塞罗那举办的2010年全球移动大会(MWC)上,微软正式宣布了Windows Phone 7,除了新的用户界面Metro,它还整合了微软的其他产品,比如Xbox Live游戏和Zune影音。

    微软透露,其实在两年前就开始了对Windows Phone 7代码的重新开发,这并不算是什么秘密,一直以来我们都能在各大网站上见到Windows Mobile 7的消息,尤其是一些界面截图。虽然微软对这些被曝光的截图始终保持缄默,但从这些截图中我们能或多或少看到现在Windows Phone 7的一些影子。下面来对Windows Mobile 7的原型设计界面进行汇总,一起看一下:

    clip_image001

    clip_image002

    clip_image003

    clip_image004

    clip_image005

    clip_image006

    clip_image007

    clip_image008

    clip_image009

    clip_image010

    clip_image011

    clip_image012

    clip_image013

    clip_image014

    clip_image015

    clip_image016

    clip_image017

    clip_image018

    clip_image019

    clip_image020

    clip_image021

    clip_image022

    clip_image023

    clip_image024

    转载于:https://www.cnblogs.com/dm521/archive/2010/02/21/1670097.html

    展开全文
  • Windows界面封装

    2013-09-13 23:06:31
    Win32应用程序可以分成两大类:控制台程序和Windows窗口...消息就是Windows系统检测到用户的一些操作(比如鼠标、键盘)并将这些操作的信息进行包装成一个结构体对象传递给应用程序。而消息队列就是Windows保存消息的一

    Win32应用程序可以分成两大类:控制台程序和Windows窗口界面程序。其中控制台程序的入口是main(或_tmain),而窗口界面程序的入口函数是WinMain(或_tWinMain)函数。

    首先,我们要明白什么是消息以及消息队列。消息就是Windows系统检测到用户的一些操作(比如鼠标、键盘)并将这些操作的信息进行包装成一个结构体对象传递给应用程序。而消息队列就是Windows保存消息的一个容器,应用程序需要创建消息循环来完成监测该队列并获取处理Windows所捕获到的消息。消息循环即是我们后面会提到的GetMessage/DispatchMessage等函数。

    为了创建并显示一个窗口,我们需要以下几步:
    1.        定义窗口类WndClass(或WndClassEx),其中包括设置窗口的过程回调函数,鼠标、背景、图标、菜单以及该窗口的类型名称(类似车的品牌)。
    2.        注册该窗口类型RegisterClass,就像是向windows注册该类型的使用权。
    3.        创建自己的窗口window:CreateWindow,该函数返回所创建窗口的句柄;
    4.        最后就是现实我们的窗口了ShowWindow。
    5.        为了使窗口能够捕获并处理用户的点击等操作,还需要在我们的主线程里创建消息循环并完成窗口过程函数对消息的处理。

    窗口的消息循环就是一个无限循环一直在捕获消息并分发给窗口,另外消息体MSG(详见MSDN)包含了对应的窗口句柄HWND,消息类型(UINT类型,比如WM_COMMAND、WM_DESTROY、WM_KEY等),鼠标位置Point以及消息其他附属内容WPARAM和LPARAM(这两个参数也是我们最常见到的函数参数)。够捕获并处理用户的点击等操作,还需要在我们的主线程里创建消息循环并完成窗口过程函数对消息的处理。


     封装必须要完成几件基本的事情:
    (1)      注册和创建窗口的封装;
    (2)      窗口过程函数的封装,因为窗口过程函数是一个全局函数,为了实现各种窗口的响应,我们必须实现窗口将每个窗口的消息分发给相应的窗口实例。这也是一个封装最核心的机制,其直接关系到了UI库的运行效率等问题。
    (3)      控件等的封装,一套库的应用性也是从这点来区分的。


    展开全文
  • windows 2012 R2系统进去以后只有CMD命令窗口,没有图形化界面,除了cmd其余的全部黑的。 今天安装SQL2014的时候需要安装.net35提示,安装不上去,想着是不是赢安装.net45所以才安装不上,结果卸载了.还出错,重新...
  • User:用户界面,负责所有的窗口管理 GDI:图形设备接口,负责在屏幕或打印机上显示文本和图形 在windows程序中,调用windows函数和调用C语言库函数(如strlen),没什么区别。最主要的区别在于C语言库函数的机器...
  • Windows:图形化用户界面 Unix、Linux:独立的环境。 转载于:https://www.cnblogs.com/luo841997665/p/4662539.html
  • Windows7是什么

    2011-07-08 14:44:01
    Windows 7是Windows Vista的下一代操作系统,在用户界面、应用程序和功能、安全、网络、管理性等方面作出大幅度改善的同时,其性能也有大幅度提升。Windows 7 简单、快速而充满乐趣。查找和管理文件有许多高效的方法...
  • 什么是Windows API

    2020-11-03 21:10:28
    Windows 自身带有一大套函数,应用程序就是通过调用这些函数来实现它的用户界面和在屏幕上显示文本和图形的。这些函数都在动态链接库里实现的。这些文件的名称都带有后缀 .dll,或有时带有 .exe。 Windows 的 3 ...
  • Windows界面编程:MFC

    千次阅读 多人点赞 2018-05-07 23:08:14
    但大家每次在写控制台程序时,看到黑框框应该都会有些许不爽吧:“输入输出为什么不能基于图形用户界面而非要使用文本用户界面呢?”事实上,在各个环境下均可用C/C++实现图形用户界面。下文的MFC技术,就是在...
  • 有时您的应用程序需要一个用户界面,但是为Python应用程序制作用户界面最好的方法是什么?输入用于Python的DelphiVCL。VCL是成熟的Windows本机GUI框架,具有庞大的包含的可视组件库和强大的第三方组件集合。它是本机...
  • 什么是 Windows Shell

    2009-09-13 09:05:00
    Windows Shell 为 Windows 用户界面提供基本框架,用户最常体验到的 Windows Shell 形式 Windows 桌面。除了桌面之外,Windows Shell 还提供了许多其他功能,使计算体验中的外观和感受始终保持一致。Windows Shell...
  • 什么是Windows服务

    2015-08-08 13:52:39
    这些服务可以在计算机启动时自动启动,可以暂停和重新启动而且不显示任何用户界面。这些功能使服务非常适合在服务器上使用,每当 需要使用不会影响在同一台计算机上工作的其他用户的功能时也适用。还可以在不
  • Windows键即窗口键,简称“Winkey”或“Win键”,其图标Microsoft Windows的视窗徽标。一般在计算机键盘的左下角,台式机独立键盘有两个,一般位于空格键左右附近(如下图)。很多人看着他很面熟,却不知道他干...
  • Windows Forms是什么?

    千次阅读 2008-10-04 11:04:00
    Windows Forms简介 Windows Forms(Windows窗体)一个新的窗体包,它使得开发人员可以创建基于Windows的应用程序,来充分利用Microsoft Windows操作系统中丰富的用户界面特性。Windows Forms新的Microsoft .NET ...
  • 第一章 Windows Shell是什么 一个操作系统外壳的不错的定义是它是一个系统提供的用户界面,它允许用户执行公共的任务,如访问文件系统,导出执行程序,改变系统设置等。MS-DOS有一个Command.COM扮演着这个角色。...
  • 之前面试时有被问到一个问题,UI界面要怎么测试,当时只回答了几点(界面清晰简洁,易用,易懂之类的),然后又被追问,既然用户界面没有明确的对与错,那到底要用什么样的一个准则来测试?今天来好好的整理一下,一...
  • 第一章 Windows Shell是什么一个操作系统外壳的不错的定义是它是一个系统提供的用户界面,它允许用户执行公共的任务,如访问文件系统,导出执行程序,改变系统设置等。MS-DOS有一个Command.COM扮演着这个角色。然而...
  • mCtrl一个C库,为MS Windows提供一组其他用户界面控件,旨在与USER32.DLL和COMCTL32.DLL的标准Win32API控件COMCTL32.DLL 。 该库的API设计为类似于Win32API。 即,在控件的窗口类注册有相应的初始化函数之后,...
  • [转]第一章 Windows Shell是什么

    千次阅读 2012-09-17 15:25:47
    一个操作系统外壳的不错的定义一个系统提供的用户界面,它允许用户执行公共的任务,如访问文件系统,导出执行程序,改变系统设置等。MS-DOS有一个Command.COM扮演着这个角色。然而Windows已经有了图形界面环境...
  • 什么是Windows Service应用程序? Microsoft Windows 服务(即,以前的 NT 服务)使您能够创建在它们自己的 Windows 会话中可长时间运行的可执行应用程序。这些服务可以在计算机启动时自动启动,可以暂停和重新启动...
  • 它主要关注创新型用户界面开发,如:多点触摸应用程序。Kivy还提供一个多点触摸鼠标模拟器。当前支持的平台包括:Linux、Windows、Mac OS X和Android。Kivy拥有能够处理动画、缓存、手势、绘图等功能...
  • Windows10_如何修改用户文件夹下的中文用户文件夹名

    万次阅读 多人点赞 2018-09-12 11:20:20
    在此,支持大家无论新建什么关于系统的东西,最好都使用英文命名,以避免很多麻烦事。那么下面来说说到底如何修改win10用户文件夹中中文用户的文件夹名字…. 1. 首先进入管理员账户(Administrator) 一般很多人的...
  • 很多朋友反馈在使用电脑的时候,突然弹出一个微软Windows10易升的界面,那么Win10易升是什么,怎么样才可以彻底关闭Win10易升呢? win10易升是什么 1、易升是微软官方发布的升级助理或者叫升级助手(官方下载)...
  • WRF模拟一般在远程服务器上进行,因为笔记本等个人电脑基本无法带动...今天的主角Xmanager远程X11(即X window,Linux系统上的标准图形用户界面)显示操作工具,没有免费版,需要付费下载。为什么需要Xmanager来设置X
  • 什么是Windows Service应用程序? Microsoft Windows 服务(即,以前的 NT 服务)使您能够创建在它们自己的 Windows 会话中可长时间运行的可执行应用程序。这些服务可以在计算机启动时自动启动,可以暂停和重新启动...
  • 1985年11月20日,微软向世人展示了首个Windows版本...恐怕我们用一天一夜也不能详尽地道清,不过其容颜的不断成熟我们有目共睹的,从其用户界面的不断演变中,你我也许可以瞥见这款操作系统在过去的岁月中所迈出的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,419
精华内容 567
关键字:

windows用户界面是什么