精华内容
下载资源
问答
  • Windows XP中的用户分为3类。

    千次阅读 2011-06-01 12:59:00
    Windows XP中的用户分为3类。 1.标准用户 该用户可修改大部分计算机设置,安装不修改操作系统文件且不需安装系统服务的应用程序,创建和管理本地用户账户和组,启动或停止默认情况下不启动的服务等,但不可访问...
    Windows XP中的用户分为3类。
    1.标准用户
    该用户可修改大部分计算机设置,安装不修改操作系统文件且不需安装系统服务的应用程序,创建和管理本地用户账户和组,启动或停止默认情况下不启动的服务等,但不可访问NTFS分区上属于其他用户的私有文件。
    2.受限用户
    该用户可操作计算机并保存文档,但不可以安装程序或进行可能对系统文件和设置有潜在破坏性的任何更改。
    3.其他用户
    又可细分为6种:
    (1)Administrator(系统管理员)——有对计算机/域的完全访问控制权;
    (2)Backup Operator(备份操作员)——可以备份和还原计算机上的文件,而不论这些文件的权限如何;还可登录到计算机和关闭计算机,但不能更改安全性设置;
    (3)Guest(客人)——权限同受限用户;
    (4)Power User(高级用户)——权限同标准用户;
    (5)Replicator(复制员)——权限是在域内复制文件;
    (6)User(普通用户)——权限同受限用户。
    Guest用户是默认设置的权限,不过,在没有开启Guest的权限时,可以添加其他的用户,把它的权限设置得很低。
    
    展开全文
  • 另外,根据是否自动创建和管理虚拟机来区分,又分为托管和非托管。因 此创建虚拟机集合总共有以下四种组合方式: 1、托管共用虚拟桌面集合 2、托管个人虚拟桌面集合 3、非托管共用虚拟桌面集合 4、非托管个人虚拟...

    本篇博文来介绍如何创建虚拟机集合,在创建集合之前,我们首先需要确认要创建那一种的集合类型,在远程桌面服中,提供两种虚拟机集合:个人共用。另外,根据是否自动创建和管理虚拟机来区分,又分为托管非托管。因此创建虚拟机集合总共有以下四种组合方式:


    1、托管共用虚拟桌面集合

    所谓托管,就是自动创建和管理虚拟机,所以需要准备虚拟机模板;所谓共用集合,就是当用户连接到集合时,是向户分配一个临时的虚拟机,所以只要空闲的虚拟机都可以被分配使用,从而达到虚拟机共用的效果。


    2、托管个人虚拟桌面集合

    需要准备虚拟机模板;所谓个人集合,就是当用户连接到集合时,是向用户分配一个专用的虚拟机,所以当某个虚拟机第一次分配给某个用户后,该虚拟机就成为该用户专用的,即使它处于空闲状态,都不会被分配给别的用户使用。


    3、非托管共用虚拟桌面集合

    所谓托管,就是手动创建和管理虚拟机,所以需要手动准备每台虚拟机,然后加到虚拟机集合中


    4、非托管个人虚拟桌面集合

    需要手动准备每台虚拟机,然后加到虚拟机集合中


    这里主要来介绍前面两种集合的创建,步骤如下:


    1、打开“服务器管理器”,点击左侧列表中的“远程桌面服务”,



    2、进入远程桌面服务概述界面,点击“创建虚拟机集合”,如下图:



    3、打开创建集合向导,点击下一步,



    4、输入集合名称,点击下一步,



    5、在集合类型选择界面上,来选择要创建的集合属于哪种类型:

    第一种类型是托管共用虚拟机桌面集合,选择如下:



    第二种类型是托管个人虚拟机桌面集合,选择如下:



    6、选择一个虚拟机模板,点击下一步,



    7、用户分配界面第一种类型的集合没有此步骤,此为第二种类型集合的配置,用于用户第一次连接虚拟机的时候是否自动分配虚拟机,这里选择“启用自动用户分配”,如下图:



    8、指定虚拟机设置,这里选择默认设置,点击下一步,



    9、指定时区和组织单位(组织单位需要事先在AD中创建好),点击下一步,



    10、指定哪些用户和用户组具有访问权限以连接到集合,点击下一步,


    11、指定该集合中要创建的虚拟机的总数,点击下一步,



    12、指定虚拟机存储路径,这里选择本地RD虚拟化主机(物理机)磁盘:


    第一种集合类型的界面如下:



    第二种集合类型的界面如下:



    13、指定用户配置文件存储路径(第二种集合类型的用户配置文件存储在每个用户专用的虚拟机磁盘中,因此没有此步骤),这是第一种集合类型的配置,需要指定本地RD虚拟化主机(物理机)的磁盘路径,点击下一步,



    14、确认选择的配置信息,点击“创建”,



    15、创建集合过程中会先从虚拟机模板导出虚拟机,然后启动该虚拟机进行一系列的操作,比如:自动分配IP地址,自动加入域等等,具体步骤看下列各图:

    正在导出虚拟机……


    请看hyper-v管理器中的动静:



    导出虚拟机成功后,启动该虚拟机……


    此时hyper-v管理器中多了一个刚创建好的虚拟机,并且正在启动运行,进行一系列的配置……


    当第一个虚拟机配置好后,接着创建第二个虚拟机,并且启动运行,进行一系列的配置……


    集合创建成功!



    集合创建完后,我们可以打开服务器管理器中的“远程桌面服务”,查看概述中的结构图,可以看到所有创建好的集合,如下图所示:



    本篇写到这里,已经完成托管集合的两种创建方式,在后续博文中会介绍另外两种非托管集合的创建方式,下篇将介绍用户如何连接到虚拟机集合的步骤。



    原创作品,转载请注明出处:http://blog.csdn.net/xiezuoyong/article/details/18220885









    展开全文
  • windows标准控件的介绍与使用

    千次阅读 2014-07-06 16:23:17
    一、 Windows标准控件概述 (一)Windows标准控件 Windows系统提供的标准控件主要包括静态控件、按钮控件、编辑框控件、列表框控件、组合框控件等,如表所示。 Windows标准控件的类型 类别 ...

    一、 Windows标准控件概述

    (一)Windows标准控件

    Windows系统提供的标准控件主要包括静态控件、按钮控件、编辑框控件、列表框控件、组合框控件等,如表所示。
    Windows标准控件的类型

    类别 MFC类控件类型
    静态控件CStatic Static Text, Group Box
    按钮控件CButton Button、Check Box, Radio Button
    编辑框控件CEdit Edit Box
    组合框控件CComboBox Combo Box
    列表框控件CListBox List Box

    控件操作的学习主要关注以下几个方面:
    1、控件的创建
    控件的创建分为静态创建和动态创建两种方式。
    静态创建是指在对话框模板创建控件,并设置控件的属性,这样,在调用该对话框时,窗口系统会自动按预先的设置为对话框创建控件。程序员可以使用C1assWizard为该控件在对话框类中创建一个控件类的对象。
    动态创建是指在程序的运行中根据需要,定义一个控件类的对象,再通过窗口函数CreateWindow()或CreateWindowEx()创建控件、函数Show)A(indow()显示控件,正如操作一个子窗口。

    2、控件的属性设置
    每个控件都有一个属性集,对于静态创建的控件,可以在对话框模板中,打开控件的属性对话框直接设置控件的初始属性。在程序设计过程中,可以通过控件类对象调用方法设置控件的属性。
    3、控件消息类别
    上表所列出的控件中,静态控件不发送消息,其他控件对于用户的操作都能发送消息,不同类的控件发送的消息类别是不相同的,可以使用C1assWizard为控件映射各种消息处理函数。
    4、控件对象的常用方法
    MFC控件类提供丰富的方法函数,帮助程序员操作控件对象。
    5、用户输入消息的获取和响应
    在前一章已经介绍了MFC支持应用程序与用户之间的通信的方法,为控件的显示值映射一个对话框类的成员变量,再通过对话框数据交换和校验机制在对话框打开和关闭的时候实现数据传递,在程序运行过程中,通过UpdateData()函数主动地控制数据在控件显示和成员变量之间交换。这是MFC应用程序获取用户输入消息的主要方法。
    同时MFC保留了Windows API函数,可直接通过控件ID操作控件,获取或设置控件的显示值。例如SetDlgItemText()和GetDIgItemText()函数可以用于设置或获取编辑框的显示文本串。

    (二)控件的通用属性

    Windows标准控件的属性窗口通常由3个属性标签构成。
    1、General标签页
    General标签页中设置常规属性,通常包括:
    (1)ID
    程序通过控件ID来访问一个控件。所有的控件中,只有Static Box控件和Gm叩Box控件的ID是可以重复,一般使用默认设置IDC_STATIC.而其他类控件的ID在一个应用程序中应该是惟一的。
    (2)Visible
    设置对话框打开时控件是否可见。它的类型是布尔类型。默认为TRUE.即运行程序时显示控件。
    (3)Disabled
    设置当对话框在打开时该控件是否不可用,它的类型是布尔类型,默认为FALSE。
    (4)Group
    标记一组控件中的第一个控件。

    (5)Tap stop
    设置TAB键是否可以该控件上驻留,它的类型是布尔型,默认值为TRUE。
    (6) Help ID
    分配一个帮助ID给一个控件。这个帮助ID建立在资源ID基础上。它的类型是布尔型,默认为FALSE。
    2、Styles标签页
    可以通过Style标签页设置一些与控件风格有关的属性,不同的控件所设置的属性不相同,在本章的后续小节中将按不同的控件介绍。
    3、Extend Styles标签页
    Extent Styles标签页设置与控件显示风格有关的属性,通常包括:
    (1)Client edge
    围绕对话框建立一个有下凹风格的边框。它的类型是布尔型,默认值是FALSE.
    (2)Static edge
    围绕对话框建立一个边框。它的类型是布尔型,默认值是FALSE.
    (3)Modal frame
    该选项提供一个3D框架。
    (4)Transparent
    使用这种风格的窗口在层叠状态下是透明的,它的类型是布尔型,默认值是FALSE.
    (5)Accept files
    这种风格的对话框可接受拖放文件操作。如果用户拖动一个文件到此对话框上,对话框将接收到一个WM_DROPFILES消息。该选项的类型是布尔型,默认值是FALSE.
    (6)Right aligned text
    指定在一个对话框中文本是右对齐的。它的类型是布尔型,默认值是FALSE.
    (7)Right-to-left reading order
    对话框的文本按从右到左的顺序编排,这是为了一些特殊语言的阅读方便而设置的(如阿拉伯语言)。它的类型是布尔型,默认值是FALSE.

    (三)常用控件窗口操作函数

    Windows应用程序对控件的操作实质上是对窗口的操作,对话框窗口中的控件被视为对话框窗口的子窗口,具有通用的窗口属性,所以控件的操作还可以通过一组窗口操作的函数来完成。常用的控件子窗口操作函数如下:
    1 、CreateWindow()或CreateWindowEx()
    在程序运行过程中,可以通过调用创建窗口的函数来动态地创建控件,创建窗口的函数是CreateWindow()或CreateWindowEx()。

    2、ShowWindow()
    使用函数ShowWindow()可以显示或隐藏控件。它的函数原型为:
    BOOL ShowWindow(int nCmdShow);
    参数nCmdShow表示窗口的显示特性,例如,取值SW_HIDE表示隐藏控件,取值SW_SHOW表示显示控件。
    3、EnableWindow()
    通过函数EnableWindow(可以激活控件或禁止控件接受用户输入。它的函数原型为
    BOOL EnableWindow(BOOL nEnable=true);
    参数nEnable决定控件的激活或禁止状态,当值为true时,允许控件接受用户输入,当其值为false时,不允许控件接受用户输入,其呈灰色显示。
    4、MoveWindow()
    通过函数MoveWindow()可以移动控件或改变控件的大小。函数的原型为
    BOOL MoveWindow(int x,int y,int nWidth,int nHeight,B00L bRepaint=TRUE);
    坐标x,y决定控件所在的位置,nWidth和nHeight决定控件的大小,bRepaint表明对话框窗口移动后,控件是否需要重画,以使其与对话框窗口的相对位置与大小保持不变。
    5、 DestroyWindow()
    通过该函数能够关闭一个控件,该函数的原型为
    void DestoyWindow();


    二、CStatic类控件的使用


    在程序中出现的文本根据作用的不同,可以分为两大类:静态文本和动态文本。静态文本在程序的执行中保持不变,主要用来表示控件的功能、下一步执行的操作等。动态文本在程序执行过程中是可以改变的,在Windows中可以通过编辑控件来实现。
    
    MFC中使用CStatic类来管理静态文本控件,包括StaticText控件和Group Box控件,StaticText控件通常用来标识一个控件,Group Box通常用来分割不同组别的控件。

    一般情况下,静态控件不接受用户输入,也不发出消息。它的ID号默认为IDC_STATIC,只有CStatic类的控件的ID号是可以重复的。

    (一)Static Text控件

    用户能添加到对话框中的最简单控件是静态文本控件。静态文本控件不要求与对话框进行交互,需要显示的文本串只要在该控件属性对话框的General标签中的Caption属性中直接输入。
    对静态文本,可以在Styles标签页中设置文本的显示风格,属性设置的说明如下:
    1、Align text
    控制静态文本控件中文本的对齐方式。可能的取值有Right右对齐),Left〔左对齐),Center(居中),当No wrap选项选中时,这个选项设置为Left,它的默认值为Left。
    2 .Center vertically
    静态文本控件中文本在垂直方向上居中。它的类型是布尔型,默认值是FALSE.
    3. No prefix
    禁止文本中的“&”解释为它后面的字符有一个下划线,而直接将它作为文本的一部分进行显示。No prefix选项经常在显示包含“&”的文件名或字符串中用到。
    4. No wrap
    前提条件是文本必须是左对齐的。选中此选项时Tabs是可扩展的,但是不能保护单词的完整性。在行的末尾扩展处的部分将被剪切掉。它的类型是布尔型,默认值是FALSE。
    5. Simple
    此选项将禁用No wrap和Align text选项。在静态文本控件中的文本如果有此属性,就不保护单词的完整性,且不保证不被剪切。它的类型是布尔型,默认值是FALSE。
    6. Notify
    此选项表示当控件被选中或双击时,通知父窗口。此选项的类型是布尔型,默认值是FALSE。
    7. Sunken
    此选项表示围绕静态文本控件的文本,建立一个凹下的边框。它的类型是布尔型,默认值是FALSE。
    8. Border
    此选项表示围绕静态文本控件的文本,建立一个边框。它的类型是布尔型,默认值是FALSE。

    (二) Group Box控件

    Group Box的作用与Static Text类似,主要是用于标识控件的作用,它更多地用于成组控件的标识,例如,如下图所示,有一组单选按钮用于选择性别,一组复选框按钮用于表示兴趣爱好。

    Group Box的Styles标签页的属性设置更为简单,如下所示。

    1 .Horizontal alignment
    此选项用于设置Group Box中文本串显示的水平对齐位置,在下拉列表中提供了4个选项:Default, Right, Left, Center和默认选项Default,表示左对齐。
    2. Icon
    此选项表示使用图标作标识,代替文本串。
    3. Bitmap
    此选项表示使用位图作标识,代替文本串。
    4. Notify
    此选项表示当控件被选中或双击时,通知父窗口。此选项的类型是布尔型,默认值是FALSE。
    5. Flat
    此选项设置Group Box的线条显示风格。


    三、 CEdit类控件的使用


    编辑控件用于程序需要获取文本的时候,例如,在对话框内输入名字或数字时,由编辑控件获取此信息。编辑控件是用来存储用户输入的自由格式文本的窗口,分为单行编辑控件和多行编辑控件。单行编辑控件是用于输入单行文本的控件,多行文本编辑控件是用于输入多行文本的控件。在多行编辑控件中经常使用滚动条,从而能输入比显示区域更多的文本。事实上,Windows中的记事本(Notepad)应用程序就是一个带有控件菜单的编辑控件。
    每个编辑控件都提供了内置编辑能力,因此可以使用多行编辑控件来创建一个简单的文本编辑器。所有的编辑控件都支持特定的编辑功能,而不需要任何附加编程。在剪贴板中用到的粘贴命令在编辑控件中照常可以使用。

    编辑控件能够发送WM NOTIFY消息到对话框窗口,并告诉对话框窗口用户对编辑控件所做的操作,编辑控件能够处理的消息类别如下所示。
    消息类别发生事件
    EN_ CHANGE输入框中的文本串被修改
    EN_ ERRSPACE输入的文本串超过了输入框的显示范围
    EN_ HSCROLL 按下水平滚动条
    EN_KILLFOCUS 输入框失去焦点,也就是焦点转移到其他对象
    EN_ MAXTEXT 输入的文本串超过了设定的最大输入长度
    EN_ SETFOCUS 输入框获取焦点
    EN_ UPDATE 更新显示内容
    EN_ VSCROLL按下垂直滚动条

    使用C1assWizard可以为一个编辑控件映射一个对话框的成员变量,通过对话框的数据交换机制,方便地获取用户输入的内容,或把应用程序的响应结果输出到编辑框。成员变量的数据类型可以设为CString, int, UINT, long, DWORD, float, double. BYTE, short,BOOL, COleDateTime, COleCurrency}方便程序员在不同应用情况下的数据处理。

    (一)属性设置

    通过Styles标签页的设置,可以得到不同类型的编辑框样式:多行编辑框、密码编辑框,只读编辑框,大小写转换编辑框、数字编辑框等等。
    1 .Align text
    控制编辑控件中的文本对齐方式。可能的取值有左对齐、居中和右对齐。
    2: Muttiline
    定义该编辑控件为多行文本编辑。通常情况下,该选项不被选中。
    3. Number
    限定用户输入的只能是数字。
    4. Horizontal scroll
    在多行编辑控件中提供一个水平滚动条。默认该选项不被选中。
    5. Auto HScroll
    当用户在编辑框的最右边输入字符时,文本自动进行滚动。该选项通常被选中。
    6. Vertical scroll
    在多行编辑控件中提供一个垂直滚动条。默认该选项不被选中。
    7. Auto VScroll
    在多行编辑控件中,当用户在最后一行按回车键时,文本自动向下滚动。默认该选项不被选中。
    8 .Password
    当用户在编辑控件中输入字符时,在编辑框中不显示输入的文本,而是相同个数的“*”字符。这一选项在多行编辑控件中不能使用。默认不被选中。
    9. No hide selection
    当编辑控件失去或重新获得焦点时,该项设置将改变文本的显示方式,使编辑框中选择的文本好像总是处于选中状态。默认该选项不被选中。
    10. OEM convert
    对用户输入内容进行从Windows字符集到OEM字符集的转化,这样可以使调用AnsiToOem时正常工作。默认不被选中。
    11.Want return
    应用于多行编辑控件。该选项允许在编辑控件中按Enter键换行,而不影响对话框的默认按钮。
    12. Border
    为控件创建边界,该选项默认被选中。
    13. Uppercase
    将所有的输入内容转化为大写字符,默认不被选中。

    14. Lowercase
    将所有的输入内容转化为小写字符,默认不被选中。
    15. Read-only
    禁止用户在编辑控件中输入或修改其内容,默认不被选中。与静态文本控件的扩展属性相比,编辑控件的扩展属性只增加了一项Left scroll bar,如果设置了垂直滚动条,这一项决定了滚动条在客户区的左边。它的类型是布尔型,默认情况下不选中。


    编程实例:Exam6_1编写一个用户登录的应用程序,应用程序维护着一张合法用户的用户名和密码的列表,至于合法用户才能通过登录程序.要求如下:

    (1)用户名输入后,转换为大写字母显示,最大长度不能超过10位。
    (2)密码以‘*’代替显示,密码只能是6位数字。
    (3)按“确定”按钮时,需要确认输入框不为空,且输入符合要求,否则返回输入框重新输入。
    (4)对合法用户显示欢迎对话框,对不合法用户显示警告对话框。

    相关参考函数代码:

    void CExam6_01Dlg::OnOK() 
    {
    	// TODO: Add extra validation here
    	UpdateData(true);
    	if(m_user.IsEmpty())
    	{
    		AfxMessageBox("用户名不能为空,请重新输入");
    		m_EditUser.SetFocus();
    	}
    	else if(m_pwd.IsEmpty())
    	{
    		AfxMessageBox("密码不能为空,请重新输入");
    		m_EditPwd.SetFocus();
    	}
    	else
    	{
    		int len=m_EditPwd.LineLength();
    		if(len!=6)
    		{
    			AfxMessageBox("密码必须为六位,请重新输入");
    			m_EditPwd.SetFocus();
    		}
    		else
    		{
    			for(int i=0;i<5;i++)
    				if((m_user==userlist[i][0])&&(m_pwd==userlist[i][1]))
    				{
    					MessageBox("You are welcome!");
    					break;
    				}
    				if(i==5)
    					MessageBox("Sorry,you are not permitted.");
    		}
    	}
    	CDialog::OnOK();
    }
    
    
    CExam6_01Dlg::CExam6_01Dlg(CWnd* pParent /*=NULL*/)
    : CDialog(CExam6_01Dlg::IDD, pParent)
    {
    	//{{AFX_DATA_INIT(CExam6_01Dlg)
    	m_user = _T("");
    	m_pwd = _T("");
    	//}}AFX_DATA_INIT
    	// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
    	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
    	userlist[0][0]="MARY";
    	userlist[0][1]="123456";
    	userlist[1][0]="MARY";
    	userlist[1][1]="123456";
    	userlist[2][0]="MARY";
    	userlist[2][1]="123456";
    	userlist[3][0]="MARY";
    	userlist[3][1]="123456";
    	userlist[4][0]="MARY";
    	userlist[4][1]="123456";
    	userlist[5][0]="MARY";
    	userlist[5][1]="123456"; 
    }

    四、CButton类控件的使用


    (一)CButton类控件介绍


    按钮控件是Windows对话框中最常见的控件之一。按钮控件的类型比较丰富,其中主要有命令按钮、单选按钮、复选框按钮等。
    按钮控件能够处理的消息类别如下所示。

    消息类别发生事件
    BN_ CLICKED单击按钮
    BN_DOUBLECLICKED 双击按钮
    BN_ SETFOCUS 按钮获取焦点
    BN_ KILLFOCUS按钮失去焦点

    CButton类提供的常用访问方法:

    GetBitmap( )获得用SetBitmap()设置的位图的句柄
    GetButtonStyle()获得有关按钮控件的样式信息
    GetCheck( )获得按钮控件的选中状态
    GetCursor()获得通过SetCursor()设置的光标图像的句柄
    Gedcon()获得由Setlcon()设置的图标句柄
    GetState()获得按钮控件的选中、选择和聚焦状态
    Sefitmap( )指定按钮上显示的位图
    SetBunonStyle()设置按钮样式
    SetCheck()设置按钮控件的选中状态
    Setclrsor( )指定按钮控件上的光标图像
    SetIcon()指定按钮上显示的图标
    SetState()设置按钮控件的选择状态

    (二)命令按钮

    MFC应用程序的对话框模板默认为每一个对话框配置两个按钮—“确认”和“取消”按钮,ID固定为IDOK和IDCANCEL,并在对话框基类中定义了BN_CLICKED消息处理函数OnOK()和OnCancel(),用于完成关闭对话框时所需要的工作。这两个函数是虚函数,可以在应用程序的对话框类中重载这两个函数。
    程序员可以自由地修改默认按钮和添加新的命令按钮。通常命令按钮上都有标题以表明此按钮的作用,命令按钮的Caption属性用于设置命令按钮的标题。例如,标题“确认”表示接受用户的选择等。
    在Styles标签页中主要设置按钮的显示,默认为Default button风格,Owner draw提供了另一种按钮边框风格.Icon和Bitmap属性允许创建一个显示图标或位图的按钮,Multiline属性允许按钮上显示多行文本。Horizontal alignment和Vertical alignment属性设置标题在按钮上显示的水平及垂直方向的对齐方式。

    例6_2观察按钮上怎样在对话框中工作的。程序运行结果如下:

    程序运行结果: 程序代码下载:

    (三)单选按钮

    使用单选按钮(Radio Button),只能从一组选项中选择惟一一个选项,在组中选择一个上次未选中的选项时,其他选项自动变成未选中状态。用户可以在应用程序中添加单选按钮,并通过设置不同的属性满足自己的需要。

    属性对同一组单选按钮的设置非常重要,每一个按钮的Caption属性用于设置单选按钮的显示文本。一组中的第一个控件要选中Croup属性,表示一组控件的开始,同组的其他控件则不能设置Gro叩属性,并且同一组控件的Tab Order要求是连续的。

    打开C1assWizard的Member Variables标签页,可以发现对一组单选按钮,列表中只出现第一个控件ID,这意味着只能在对话框类中设置一个值类型的成员变量。该变量的值是int型,表示所选中的单选按钮在组中的序号,序号从0开始。例如,如果选择第2个单选按钮,则返回值为1。同样,一组单选按钮只能在对话框类设置一个单选按钮对象,也就是说一个单选按钮对象控制一组单选按钮。

    MFC除了提供值类型成员变量操作单选按钮,还支持Win32 API函数通过控件ID直接操作单选按钮,CheckRadioButton()用于设置单选按钮的选中状态,函数原型为
    CDialog::CheckRadioButton(int nIDFirstButton,int nIDLastButton,int nID_CheckButton);
    该函数包括3个参数,第一个参数是一组单选按钮中第一个按钮的ID,第二参数是一组单选按钮中最后一个按钮的ID,第三个参数是设置为选中的单选按钮的ID.函数IsDlgButtonChecked()用于检查一个按钮是否被选中,函数原型为
    CDialog::IsDlgButtonChecked(int nIDButton);
    该函数只包含一个参数,即所检查按钮的ID号,返回值为true或false.

    Radio按钮属性对话框的Style标签页:
    1 .Auto
    该项被选中时,控件状态将自动改变。该项通常被选中。
    2. Left text
    把控件的标题放在控件的左边。通常,控件的标题放在控件的右边。
    3. Push-like
    将控件设置成具有下压按钮的外观。则单击该按钮时,由原来的凸状态改变成下压状
    态。
    4. Multiline
    控件的标题可通过多行显示。若该项未被选中,则标题超过按钮的宽度时,自动截去
    后面部分
    5. Flat
    将控件左边的小圆圈显示为平放。默认为凹入。
    6. Icon
    将控件标题设置为图标。该项通常未选中。
    7. Bitmap
    将控件的标题用位图代替。Bitmap与Icon选项中,至多选中一个。该选项通常未选中。

    例6_3建立一个单文档应用程序,添加包含单选按钮的RadioButton对话框,学习按钮的使用。RadioButton对话框的界面设计如下:


    程序运行结果: 程序代码下载:



    (四)复选按钮

    复选按钮与单选按钮一样,是Windows提供的另一种形式的按钮。使用复选按钮,可以从一组选项中选择一个选项或多个选项,各个选项之间的选中状态互不相关。

    使用C1assWizard可以为每一个复选框按钮在它所在的对话框类中添加一个值类型的成员变量用于传递数据,该变量的值是BOOL型,值为true时表示选中复选框,值为false时表示未选中复选框。

    MFC同样支持Win32 API函数对复选框控件的操作,函数CheckDlgButton()设置一个复选框的选中状态,函数原型为
    CDialog::CheckDlgButton(int nIDButton,UNIT nCheck);

    该函数包括二个参数,第一个参数是复选框按钮的ID,第二个参数设置按钮的选中状态,值为BST-CHECKED或1时表示选中,值为BST-UNCHECKED或0时表示按钮未选中。
    例6_4编写一个简单的CheckBox对话框。界面如下:

    程序运行结果: 程序代码下载:

    五、 CListBox类控件的使用


    (一) CListBox类控件介绍

    对于要从若干数据项中进行选择的场合,一个方便的方法是使用列表框。列表框是一个矩形窗口,在矩形窗口中包含一些列表字符串或其他的数据元素。列表框通常出现在对话框里,如用列表框选择文件名、目录等。列表框有一个预定义的键盘接口,用户可以用键盘上的箭头或PageUp及PageDown键在列表框中进行数据的选择,或通过适当的样式设置与Shift或Ctrl键组合使用。

    列表框包括两种样式—单选列表框和多选列表框。单选列表框只允许用户一次选择一个选项,而多选列表框则可以一次选择多个选项。列表框可以自带滚动条,数据项可按排序后的顺序显示,使用己排序的列表框时,用户很容易在大量选项中搜索并作出选择。

    列表框控件属性的Styles标签的具体属性设置如下:

    1.Selection
    设置列表框中选项的选中方式。有4个选项一Single,表示在给定的选项电至多有一个被选中:Multiple,表示可以有多个选项被选中,但忽略Shift键和Ctrl键;Extended,允许选择多个选项,在选择时,可以使用Shift和Ctrl键:None,不允许选择任何选项。
    2. Owner draw
    设置列表框将由列表框所有者来绘制,在大多数情况下,该选项设置为No.
    3. Sort
    设置列表框内容应按字母顺序排序,该选项通常被选中。
    4. Multi-column
    创建一个多列列表框,该选项通常未选中。
    5. Use tapstops
    设置列表框中显示的文本选项可以包含标签页,该选项通常未选中。
    6. Want key input
    设置列表框有输入焦点,当按键时列表框所有者收到WM_VKEYTOITEM或WM_CHARTOITEM消息。该选项通常未选中。
    7. Disable no scroll
    即使不需要,也显示一个垂直滚动条。该选项通常未选中。
    CListBox类的通用方法用来获得和设置列表框数据的值和属性,所有的ClistBox控件都有这些方法,包括单选列表框、多选列表框和自绘列表框等。

    CListBox类通用方法包括:


    GetCount() 获得列表框中列表项数目
    Geforiwntafxtent( ) 获得列表框的水平滚动宽度(以像素为单位)
    GetItemData() 获得与某列表框项有关的32位值
    GetITermDataPtr() 获得指向列表框项的指针
    GetItemHeight( ) 获得列表框中项的高度
    GetItemRect() 获得列表框项边界矩形
    GetLocale() 获得列表框的位置标识(LCID)
    GetSel() 获得列表框项的选中状态
    GetText() 把列表框中字符串复制到缓冲区
    GetTextLen() 返回列表框字符串的长度(单位:字节)
    GetTopIndex() 获得列表框中第一个可见项的下标(由0开始)
    ItemFrompoint()确定和返回离某点最近的列表框项的下标
    SetColumnWidth()设置多列列表框的列宽度
    SetHotizontalExtent()设置列表框的水平滚动宽度(单位:像素)
    SetItemData()设置与一个列表框项有关的32位值
    SetDataPtr()设置一个列表框项的指针
    SetltemHeight()设置列表框中项的高度
    SetLocale( )设置列表框的位置标识(LCID )
    SetTabStops()设置列表框的制表位(Tab-Stop)位置
    SetTopIndex()设置列表框中第一个可见项的下标(由0开始)

    使用列表框之前,需要预先准各好列表框中的数据选择项,在对话框的运行过程中还允许对选择项执行增加和删除操作,CListBox类提供了操作字符串的一套方法,CListBox类用于操作列表框中字符串的方法如下:

    AddString( ) 在列表框中加入一个字符串
    DeleteString( ) 从列表框中删除一个字符串
    Dir() 从当前目录加文件名放入列表框
    FindString( ) 在列表框中搜索一个字符串
    FindSIringEacact() 在列表框中搜索第一个与指定字符串匹配的字符串
    InsertStting( ) 在列表框指定下标处插入一个字符串
    ResetContent() 清除列表框中的所有项
    SelectString() 在单选列表框中搜索并选择一个字符串

    CListBox类还声明了几个虚函数:

    CharToItem() 可以重载此方法来为自绘列表框(没有字符串)处理WM-CHAR消息
    CompareItem() 由MFC调用以得到排序后的自绘列表框中的新项的位置
    DeleteItem( ) 当用户从自绘列表框中删除一项时,MFC调用此方法
    DrawItem() 当确定自绘列表框项必须重绘时,MFC调用此方法
    MeasureItem( ) 创建自绘列表框时MFC调用此方法来决定列表框的维数
    VKeyToItem( ) 用户可重载此方法,来处理具有LBS_WANTKEYBOARDINPUT样式的列表框的WM_ KEYDOWN消息

    与列表框相关的消息
    LBN_ DBLCLK当双击某列表框选项时发送。
    LBN_ERRSPACE因为内存不够,一个操作不能执行时发送。
    LBN_ KILLFOCUS当列表框失去输入焦点时发送。
    LBN_ SELCANCEL当用户取消某列表框选择时发送。
    LBN_ SELCHANGE当列表框中的选择状态改变时发送
    LBN_ SETFOCUS当列表框得到输入焦点时发送。

    上面的消息都用LBN_作前缀。如果要发送这些消息,列表框必须在Properties对话框里选中Notify复选框。LBN_DBLCLK消息是最常用的消息,大多数用户希望双击列表框选项时执行某种默认的操作。例如,显示文件名列表时,希望双击某文件名可以打开该文件进行编辑。

    (二)单选列表框

    列表框的默认模式是单选项模式,在这种模式下,用户每次只能从列表框中选中一个选项。对列表框的操作围绕着选择项进行,包括选择项的装载、删除、设置选中状态及获得选中状态。

    列表框是按数组方式来组织选择项的,每一个选择项包含一个下标值和显示值。下标值从0开始:显示值是一个CString型的字符串。属性Sort的设置与对选择项的操作密切相关。

    CListBox类提供了两个函数装载选择项,即CListBox::AddString(LPCTSTR LpszItem)和CListBox::InsertString(int nlndex, LPCTSTR Lpszltem)。当选中Sort属性时,AddString按字符串排序顺序插入新的选择项,当未选中Sort属性时,AddString在选择项序列的最后插入一个新的选择项。InsertString操作不受Sort属性的影响,在指定下标位置插入新的选择项,其他选择项后移一位。

    当未选中Sort属性时,使用C1assWizard可在对话框类为列表框控件关联两种类型的值成员变量,CString类型的值成员变量表示选择项的显示值,int类型的值成员变量表示选择项的下标值。当选中Sort属性时,只能关联一个CString类型的值成员变量。所关联的值成员变量的数据类型不同,决定着在初始化时进行选中操作的方法也不同。

    当关联的是int型的值成员变量,可以使用CListBox::SetCurSel(int nSelect)来设置列表框的初始选中状态。如果关联的是CString型的值成员变量,就要使用CListBox::SelectString(intnStartAfter,LPCTSTR LpszItem)函数,从nStartAfter指定的下标位置起查找由LpszItem字符串指定的选择项,来设置列表框的初始选中状态。

    常用的操作还有:CListBox::DeleteString(int nIndex),删除指定下标的选择项,删除后其后的选择项向前移动一位;CListBox::GetCursel(),返回当前选中的选择项的下标值。

    例Exam6_4通过一个简单的ListBox_Single对话框来介绍如何使用列表框。在对话框中包括一个列表框、一个编辑框。ListBox_Single对话框的运行结果如下:


    程序运行结果: 程序代码下载:


    (三)多选列表框
    多选列表框扩展了标准的单项选择列表框的能力,可以解决在一个列表框中选择多个选项带来的复杂性。

    对于多选列表框,同样可以关联CStting和int类型的值成员变量,但通过值成员变量传递回来的是最后一个选中的选项内容,要获得选中的多个选项,需要通过CListBox类提供的多选项操作方法。

    为多项选择列表框提供的CListBox类方法如下:

    GetAnchorlndex()获得多项选择列表框中当前定位项的下标
    GetCaretlndex()获得多项选择列表框中具有光标矩形的项的下标
    GetSelCount()获得多项选择列表框中当前所选的项的数目
    GetSelItems()将当前所有被选列表框项下标放入一整型数组缓冲区
    SelItemRange()切换多选择列表框项范围的选择状态
    SetAnchorIndex()在多项选择列表框中扩充选择设置开始(定位)项
    SetCaretlndex()在多项选择列表框中指定下标项设置光标矩形
    SetSel()在多项选择列表框中设置选项的选择状态

    【例7-6】通过一个简单的ListBox_Multiple对话框,来介绍如何使用多选列表框。对
    话框中包含一个多选列表框、一个编辑框。ListBoxesMultiple对话框的运行效果如图所示。


    程序运行结果: 程序代码下载:

    六、 CComboBox类控件的使用


    组合框控件是把编辑框和列表框控件组合起来的一类控件。组合框使用户既能像使用编辑控件那样直接输入数据,也能像使用列表框那样从一些选项中选择某一选项来输入数据。
    当用户没有被限制必须选择列表框中选项时,组合框十分有用。组合框的列表框部分能用来显示最近的选择,同时给用户在编辑控件中输入新选择的自由。
    有如下三种类型的组合框控件:
    1.简单组合框(Simple)
    显示一个编辑控件和列表框。该列表框总是可见的。当列表框包含的选项太多,显示
    不下时,将使用一个滚动条在整个列表框中滚动。
    2.下拉式组合框(Dropdown)
    隐藏列表框,直到用户打开它。使用这种类型的组合框,在对话框中占用的空间比简
    单组合框要小得多。
    3.下拉式列表框(Drop List)
    与下拉式组合框相似,只有被用户打开时,才显示列表框。同时,编辑框只能显示选中的选项,而不允许用户输入。因此,用户只能从列表框中选择选项。

    (一)CComboBox类控件介绍

    MFC的CComboBox类封装了组合框。需要指出的是,虽然组合框是编辑框和列表框的组合,但是CComboBox类并不是Mit类和CListBox类的派生类,而是CWnd类的派生类。

    CComboBox类的成员函数较多。其中常用的函数可粗分为两类,分别针对编辑框组件和列表框组件。可以想象,这些函数与CEdit类和CListBox类的成员函数肯定有很多类似之处,但它们也会有一些不同的特点。如果我们能从“组合框是由编辑框和列表框组成”这一概念出发,就能够很快掌握CComboBox的主要成员函数。

    事实上,绝大部分CComboBox的成员函数都可以看成是Mit或CListBox成员函数的翻版。函数的功能、函数名、甚至函数的参数都是类似的。为了方便学习,下面列出的CComboBox类成员函数,采用了与对应的Mit或CListBox成员函数相比较的做法。在成员函数的列表中,分别列出了成员函数名、对应的Mit或CListBox成员函数,以及二者之间的不同之处。不同之处是指函数的功能、参数以及返回值的差别。
    针对编辑框组件的主要成员函数如表7-13所示。该表的前3个函数实际上是CWnd类的成员函数,可用来查询和设置编辑框组件。

    针对编辑框组件的CComboBox类成员函数:

    成员函数名对应的CEdit成员函数不同之处
    成员函数名 对应的CEdit成员函数不同之处
    CWnd::GetWmdowText CWnd::GetWindowText无
    CWnd::SetWindowText  CWnd::SetWindowText无
    CWnd::GetV,rmdowTextLength CWnd::GetWindowTexdength 无
    GetEditSel GetSel 函数名不同
    SetEditSel SetSel 函数名不同,且无bNoScroll参数
    Clear  Clear无
    Copy Copy 无
    Cut  Cut无
    Paste  Paste无
    与CListBox的成员函数类似,针对列表框组件的CComboBox成员函数也可以分为3类。用于插入和删除列表项的成员函数、用于搜索、查询和设置列表框的成员函数,与列表项的选择有关的成员函数如下:

    另外,CComboBox的ShowDrouDown()成员函数专门负责显示或隐藏列表框组件,该函数的声明为
    void ShowDropDown(BOOL bShowIt=TRUE);

    成员函数名对应的CListBox成员函数区别:

    AddString  AddStting 无
    InsertString InsertStting无
    DeleteString DeleteString无
    ResetContent ResetContent无
    Dir  Dir 无
    GetCount GetCount无
    FindString FindString无
    GetLBText  GetText仅函数名不同
    GetLBTextLen GetTextLen 仅函数名不同
    GetItemData  GetltemData无
    SetItemData  SetItemData无
    GetTopIndex  GetTopIndex无
    SetToplndex  SetTopIndex无

    与列表项的选择有关的CComboBox成员函数

    成员函数名 对应的CListBox成员函数区别 
    GetCurSel  GetCurSel 无
    SetCurSel  SetCurSe1 新选中的列表项的内容会被复制到编辑框组件中
    SelectStting SelectString新选中的列表项的内容会被复制到编辑框组件中

    如果参数bShowlt的值为TRUE那么将显示列表框组件,否则将其隐藏。该函数对简单组合框没有作用。

    由于组合框中包含了编辑框和列表框,因此它有大量的属性。大多数编辑框和列表框
    样式有可用于组合框的相似属性,下面两个属性是组合框特有的。
    1 .Enter listbox items
    用于创建对话框时默认显示的列表项。在每次进入后按Ctrl+Enter键。
    2. Type
    用于指定组合框类。用户可以在Simple, Dropdown和Drop List之间选择。Dropdown是默认的选择。Simple类型是一个文本框与列表框相组合的风格,DropDown类型允许用户输入,DropList类型不允许用户输入。所以选择DropDown类型时,可以在对话框类中连接CString类型的值成员变量,选择DropList类型时,可以在对话框类中连接int型的值成员变量,对于两者的操作与列表框的操作完全相同。

    例Exam6_6,通过一个简单的对话框ComboBox来介绍如何使用组合框,对话框运行效果图:


    程序运行结果: 程序代码下载:

    七、 CScroIIBar类控件的使用


    (一) CScrollBar类控件介绍

    滚动条是一种交互式的、高度可视化的控件,它对用户的输入有几种不同的响应。滚动条中包括一个滑块,这个滑块能够沿滚动条移动;在滚动条的两端还各有一组按钮。

    滚动条控件与属于窗口的滚动条是不一样的,属于窗口的滚动条由该窗口创建、管理和释放,而滚动条控件由用户创建、管理和释放。滚动条在窗口中可以设置为水平或垂直,单击滚动条两端的箭头按钮时,滚动条移动的距离称为滑块的滚动单位,滚动单位可以根据程序的需要进行设置。

    滚动条控件是Windows窗口操作中常用的工具。滚动条控件最直接的功能是当应用程序显示的内容超过窗口的范围时,用户可通过拖动滚动条遍历整个窗口内容。滚动条在功能上分为垂直与水平滚动条,分别实现窗口内容的纵向和横向滚动。

    此外,滚动条控件还可作为调节音量、颜色的工具。在应用程序开发中常见到类似的滚动条使用方法。

    滚动条类的主要方法及其含义如下所示:

    EnableScrollBar( )使滚动条的一个或两个箭头有效或无效
    GetScrollInfo( )获得滚动条的消息
    GetScrollLimit()获得滚动条的范围
    GetScrollPos()获得滚动条当前的位置
    GetscrollRange()获得制定滚动条的当前最大和最小滚动位置
    SetScmBlnfo()设置滚动条的消息
    $etSCrolIPOS()设置滚动块当前的位置
    SetScrollRange( )设置制定滚动条的最大和最小滚动位置
    ShowScrollBar()显示或隐藏滚动条
    滚动条可发出的消息如下:
    SB_ BOTTOM/ SB_ RIGHT滚动到底端(右端)
    SB_ TOP/SB_ LEFT滚动到顶端(左端)
    SB_ LINEDOWN/ SB_LINERIGHT向下(向右)滚动一行(列)
    SB_LINEUP/SB_ LINELEFC向上(向左)滚动一行(列)
    SB_ PAGEDOWN/SB_PAGERIGHT向下(向右)滚动一页
    SBesPAGEUP/SB_ PAGELEF向上〔向左)滚动一页
    SB_THUMBPOSITION滚动到指定位置
    SB THUMBTRACK 滚动框被拖动。用该消息可跟踪对滚动框的拖动
    SB_ENDSCROLL 滚动结束



    展开全文
  • Windows Server 2012 R2 会话远程桌面-标准部署-RD网关(RemoteApp) 马博峰 一、什么是RD网关 远程桌面网关(RD 网关),在早期版本的远程桌面连接中称为TS网关,在Windows server 2012 R2中成为Remote Desktop ...

    Windows Server 2012 R2 会话远程桌面-标准部署-RD网关(RemoteApp)

    马博峰

    一、什么是RD网关

    远程桌面网关(RD 网关),在早期版本的远程桌面连接中称为TS网关,在Windows server 2012 R2中成为Remote Desktop Gateway Server,RD网关使授权的远程用户能够从任何联网设备连接到内部企业网络上的资源。RD 网关使用远程桌面协议 (RDP)和 HTTPS 协议帮助创建一个更安全的加密连接,简单来说,如果企业内部网络有多个远程桌面(终端服务器)要发布到Internet,在通常的情况下,是需要将这些远程桌面服务器通过防火墙发布到Internet(使用不同的端口),Internet上的用户使用不同的端口连接到不同的内网服务器。而在Windows Server 2012 R2中,通过配置RD网关,可以让Internet使用“远程桌面连接”程序,通过RD网关服务器直接连接到内网的多个远程桌面计算机。

    在早期版本的远程桌面连接中,用户无法通过防火墙和网络地址转换器连接到远程计算机,这是因为通常会阻止用于远程桌面连接的端口 3389 以增强网络安全性。但是,RD 网关服务器使用端口 443,此端口可通过安全套接字层 (SSL) 隧道传输数据。

    clip_image001

    RD 网关服务器具有以下优点:

    1、支持从 Internet 到公司网络的远程桌面连接,无须设置虚拟专用网络 (VPN) 连接。

    2、支持跨越防火墙连接到远程计算机。

    3、允许与计算机上运行的其他程序共享网络连接。这样,您就可以使用 ISP 连接而非公司网络来通过远程连接方式发送和接收数据。

    4、通过远程桌面网关管理器可以配置授权策略,以定义远程用户要连接到内部网络资源必须满足的条件。例如,可以指定:

    (1)可以连接到内部网络资源的用户(即,可以连接的用户组)。

    (2)用户可以连接到的网络资源(计算机组)。

    (3)客户端计算机是否必须是 Active Directory 安全组的成员。

    (4)是否允许设备的重定向。

    (5)客户端需要使用智能卡身份验证还是密码身份验证,还是可以使用任一方法。

    5、可以将 RD 网关服务器和远程桌面服务客户端配置为使用网络访问保护 (NAP) 来进一步增强安全性(客户端操作系统必须是XP,Vista,Windows 7,Windows 8)

    6、可以利用RD 网关服务器部署内外网隔离方案。

    二、RD网关部署

    RD网关服务器通常都有2个不同的物理网卡对应着2个不同的IP地址,一个是内网的IP地址,另一个则是外网或者是公网的IP地址,其主要功能就是用户进行访问的地址的转换,从而安全的从企业外部网络访问到内网中。如果能巧妙的利用RD网关这个角色,就可以实现很多种功能,比如一公司内部的办公环境,员工的桌面是不能上网的,完全是一个闭塞的工作环境。但是部分领导要求自己的桌面上网,或者是某些应用程序能上网,但是又不能影响内部的环境。这种情况下,可以将RD网关部署在内网环境,而用户访问的的桌面或者应用程序服务器(RDSH和RDHV)就可以部署在能上网的环境,这样用户通过内网访问RD网关就可以安全的访问自己的应用和桌面程序。完全可以做到用户在内网环境中,用户的QQ程序和邮箱程序可以上网,其它的程序则无法上网,完全做到了内外网的隔离。

    但是大部分的企业是将RD网关部署在企业中DMZ区,通过防火墙让不在公司内部的办公人员进行远程访问,从而取代了VPN服务器,RD网关服务器可以是一台物理服务器,也可以是一台虚拟机,但是要确保RD网关能同时访问内网和外网。

    在此次配置中,使用的服务器情况如下:  

    服务器名称

    操作系统

    IP设置

    功能

    AD-DC.mabofeng.com

    Windows Server 2012 R2

    192.168.1.100

    域控制器

    AD-DC.mabofeng.com

    Windows Server 2012 R2

    192.168.1.100

    CA证书服务器

    BD-RDS.mabofeng.com

    Windows Server 2012 R2

    192.168.1.201

    远程桌面连接代理

    RD-GW.mabofeng.com

    Windows Server 2012 R2

    192.168.1.76

    远程桌面网关

    202.85.XXX.XXX


    接下来就来安装远程桌面网关(RD 网关)角色

    步骤1、首先以管理员的身份,登录到RD连接代理服务器BD-RDS.mabofeng.com,运行服务器管理器,在服务器管理器中,点击远程桌面服务-概述,在概述页面中,可以看到部署概述,然后点击RD网关。

    clip_image003

    步骤2、在添加RD网关服务器向导中,首先在服务器池中选择要安装RD网关的服务器,要安装RD网关的服务器事先要叫到内网的域中,点击箭头将RD网关服务器添加到右边,然后点击下一步。

    clip_image005

    步骤3、在添加RD网关向导中命名自签名SSL证书,SSL证书用于对远程桌面服务客户端和RD网关服务器之前的通信进行加密。自签名SSL证书名称必须域RD网关服务器的完全限定域名(FQDN)相匹配,而FQDN必须与远程桌面服务客户端使用的RD网关服务器名称相匹配。这里输入RD-GW.mabofeng.com,然后点击下一步。

    clip_image007

    步骤4、在添加RD网关的却仍选择页面中,查看将要在服务器上安装RD网关角色服务器,并将会此服务器添加到部署中,然后点击添加。

    clip_image009

    步骤5、在查看进度选项中,等待RD网关的完成安装。

    clip_image011

    步骤6、在添加RD网关中的结果页面里,可以看见远程桌面网关角色服务已经安装成功,安装完成后,则还需要进简单的配置,在结果页面中,点击配置证书。

    clip_image013

    步骤7、在部署属性中的配置页面中,选择RD网关,点击选择现有证书,然后点击应用,在之前的章节中,我们介绍了如何申请证书,以同样的方法从域证书服务器中申请证书,然后添加到这里,点击确定。

    clip_image015

    步骤8、设置完成RD网关证书后,回到步骤6中,点击查看部署RD网关的属性,或者直接在步骤7中,配置玩证书后,直接点击RD网关,则可以查看RD网关的属性。在RD网关属性中,可以选择用户的登录方式,一种是密码身份验证,另一种是智能卡身份验证,或者是让用户进行选择。勾选对远程计算机使用RD网关凭据,当远程计算机登录RD网关时,则需要输入凭据。勾选绕过本地地址的RD网关服务器,如果是内网用户访问RD网关,则可以跳过RD网关服务器,直接连接到RD连接代理服务器。点击确定后。

    clip_image017

    步骤9、当完成安装RD网关后,在部署概述中就可以看到RD网关的颜色变成了灰色,至此,RD网关的部署工作就完成了。

    clip_image019

    三、使用远程桌面网关管理器配置RD网关

    完成部署安装RD网关后,接下来就是需要进行配置RD网关了,配置RD网关需要以域管理员的身份登录到RD网关服务器中,使用远程桌面网关管理器进行配置,除此之外,还需要对服务器的防火墙进行配置,打开相应的端口,关闭不用的端口,这里就不做演示了,这里主要介绍RD网关的配置选项。

    步骤1、在RD网关服务器中,打开控制面板,选择系统和安全,点击管理工具,然后点击远程桌面服务,在远程桌面服务文件夹中,就可以看到远程桌面网关管理器。

    clip_image021

    步骤2、远程桌面服务工具是随着RD网关的安装而安装的,在其它远程桌面角色中不会安装此工具,如果想远程管理RD网关,则需要在添加角色和功能向导中,选择安装远程桌面网关工具。

    clip_image023

    步骤4、当打开RD网关管理器后,就可以进行配置,RD网关管理器分为菜单栏,树状结构,显示一栏和操作一栏。

    clip_image025

    步骤5、在RD网关管理器中,右键点击RD-GW本地RD网关服务器,在弹出的菜单中选择属性,首先要对RD网关服务器进行设置。

    clip_image027

    步骤6、在RD网关属性中,首先是常规选项栏中,这里可以设置最大连接数,就是用户连接到RD网关服务器的并发数量,如果并发数量较大可能会降低服务器的性能,所以为了避免降低服务器的性能,可以设置允许到服务器的最大并发连接数限制。RD网关的连接总数包括了通过该服务器的所有UDP/HTTP和RPC-HTTP连接。

    clip_image028

    步骤7、在RD网关属性中的第二选项SSL证书选项中,可以设置RD网关的证书,RD网关证书是HTTPS/UDP侦听程序的安全通信和NAP消息传送所必须的,证书会自动绑定到配置的HTTP和UDP端口,由于之前我们已经申请了证书并成功的导入了RD网关证书,所以在SSL证书一栏中,显示了证书的详细情况。如果没有导入证书,可以通过执行一些操作指定要为RD网关服务器导入的SSL证书类型。

    clip_image029

    步骤8、在RD网关属性中的传输设置一栏中,设置RD网关的传输IP地址。可以修改HTTP和UPD的传输端口号码,默认为443和3391,协议RPC-HTTP和HTTP传输共享相同的设置。

    clip_image030

    步骤9、在RD网关属性中的RD CAP页面中,指定是否运行网络侧罗服务器(NPS)的本地或中心服务器上存储的远程桌面连接授权策略(RD CAP)。通过远程桌面连接授权策略 (RD CAP),可以指定可连接到 RD 网关服务器的用户。此过程描述如何创建新的本地RD CAP。此外,还可以指定中心RD CAP存储。

    clip_image031

    步骤10、在RD网关属性中的服务器场页面中,可以指定要包括在RD网关服务器场中的RD网关服务器。当在环境中部署了多个RD网关服务后,可将这些RD网关服务组成RD网关服务场,可以进行用户的均衡负载和高可用性。

    clip_image032

    步骤11、在RD网关属性中的审核页面中,设置为在RD网关中启用日志记录,并选择要记录的事件。

    clip_image033

    步骤12、在RD网关属性中的SSL桥接页面中。可以设置RD网关配置为可与ISA服务器或非微软产品一起使用,以便执行安全套接字层(SSL)桥接。

    clip_image034

    步骤13、在RD网关属性中的消息页面中,可以创建一个消息,当用户登录到自己应用或者是桌面时,用户所看到的信息。可以创建一个向以登陆远程计算机的用户显示的消息,也可以选择每次用户登录远程计算机时向用户显示的消息。可允许从支持RD网关消息的远程桌面客户端进行连接。

    clip_image035

    四、使用远程桌面网关管理器配置RD网关策略

    除了对RD网关的设置外,还可以对使用登陆远程计算机的用户和设备进行设置,他与域控制器上的域策略不冲突,只是针对用登陆远程计算机的用户和设备进行设置,所以他分为用户策略和设备策略,在RD网关管理器中,策略选项中,可以看到连接授权策略和资源授权策略。这里先点击连接授权策略,默认情况下会有一个RDG_CAP_AllUser的策略,可以对其进行修改,双击RDG_CAP_AllUsers。

    clip_image037

    步骤1、在RDG_CAP_AllUsers的属性常规页面中,可以更改RDG_CAP_AllUsers策略的名称,并且选择是否启用,如果存在很多的策略,可以设置策略的顺序级。

    clip_image038

    步骤2、在RDG_CAP_AllUsers的属性要求页面中,可以指定用户链接到RD网关服务器必须满足的要求,可添加用户组成员身份和客户端计算机组成员身份,并选项受支持的windows身份验证方法支持密码和智能卡选项,如果选择了2种方法,每一种均可用于连接。

    clip_image039

    步骤3、在RDG_CAP_AllUsers的属性设备重定向页面中,可以对使用RD网关进行连接的客户端,在远程会话中指定是启用还是禁用对本地客户端设备和资源的访问,RD网关设备重定向用于运行远程桌面连接的授信任客户端。目前支持的设备重定向有驱动器、剪贴板、打印机、端口(仅COM和LPT)和支持的即插即用设备。

    clip_image040

    步骤4、在RDG_CAP_AllUsers的属性超时页面中,指定远程会话超时和重新连接设置,可以设置断开会话前空闲时间和规定一定时间后会话超时,可以设置在达到会话超时之后,可以断开会话连接或者默认重新对会话进行身份验证和授权。

    clip_image041

    接下来,就可以针对资源授权策略进行设置,资源授权策略默认的名称为RDG_ AllDmainComputers,可双击RDG_ AllDmainComputers进行修改。

    clip_image043

    步骤1、在RDG_ AllDmainComputers的属性常规页面中,使用RD CAP,可以指定用户可通过RD网关连接的网络资源(计算机),可以更改策略的名称和描述,并且选择是否启用。

    clip_image044-

    步骤2、在RDG_ AllDmainComputers的属性用户组页面中,指定其成员可通过RD网关连接到网络上的远程计算机的用户组,点击添加即可添加用户组。

    clip_image045

    步骤3、在RDG_ AllDmainComputers的属性网络页面中,设置用户可以使用RD网关连接到网络资源,网络资源包括Active Directory域服务安全组或远程桌面服务器场中的计算机。可以通过选择Active Directory域服务安全组或者选择现有RD网关管理的组或创建新组,或者允许用户连接到任意网络资源。

    clip_image046

    步骤4、在RDG_ AllDmainComputers的属性允许使用的端口页面中,修改远程桌面客户端的端口,默认情况下,远程桌面客户端通过端口3389远程连接到网络资源。

    clip_image047

    五、针对RD连接代理(高可用模式)配置RD网关

    如果我们的环境中已经配置了RD连接代理(高可用性模式),则在RD网关服务器中,需要配置CAP和RAP,并将所有的RD连接代理服务器和RD连接代理服务群集加入到RD网关中,RD网关的安装与非高可用模式的RD网关相同,点击RD网关后进行安装。

    clip_image049

    步骤1、在RD网关管理器中,点击策略,在操作一栏中点击新建授权策略。

    clip_image051

    步骤2、在新建授权策略向导中,为RD网关穿件授权策略,可以同时创建RD CAP和RD RAP策略,也可单独进行创建,如果同时创建RD CAP和RD RAP,用户无法通过此RD网关服务器连接到网络资源。点击下一步。

    clip_image053

    步骤3、在新建授权向导中的连接授权策略里,输入RD CAP的名称,点击下一步。

    clip_image055

    步骤4、在要求界面中,选择一个受支持的Windows身份验证方法,并添加关联了用户组和计算机组。

    clip_image057

    步骤5、在启用或者禁用设备重定向中,指定是启用还是禁用对本地客户端设备和资源的访问。

    clip_image059

    步骤6、指定远程会话的超时和重新连接设置。

    clip_image061

    步骤7、查看RD CAP摘要信息。

    clip_image063

    步骤8、在创建RD RAP中,输入RD RAP的名称。

    clip_image065

    步骤9、添加将与此RD RAP关联的用户组,这些组的成员用户通过RD网关远程连接到网络资源。

    clip_image067

    步骤10、这里选择现有RD网关管理的组或创建新组。

    clip_image069

    步骤11、在RD网关管理的组页面中,创建新的RD网关管理的计算机组并输入组的名称,这里要键入要添加到组的各个网络资源(计算机)的名称,然后点击添加,由于我们的RDCB服务器分别为RDCB01和RDCB02,并在域控制器中的DNS里建立了HARDCB,所以也要添加HARDCB。

    clip_image071

    步骤12、设置远程桌面的端口信息。

    clip_image073

    步骤13、最后一步,查看RD CAP摘要,然后点击完成。

    clip_image075

    步骤13、确认成功创建策略后,就可以点击关闭,至此为RDCB(高可用性)创建的配置CAP和RAP就完成了,通过RD网关进行访问就可以实现RDCB的切换而不影响RD网关的运作。

    clip_image077

    本文出自 “让"云"无处不在” 博客,请务必保留此出处http://mabofeng.blog.51cto.com/2661587/1340954

    展开全文
  • 03-Windows Server 2012 R2 会话远程桌面-标准部署(RemoteApp) 作者:马博峰 在之前的文章中,我们以快速的部署方式完成了RemoteApp的部署,如果在企业正式环境中需要部署基于会话的远程桌面,那么最好采用...
  • 用户接口

    万次阅读 2017-04-14 10:46:39
    用户接口(User Interface) 博文目录:  1,接口含义  2,接口分类  3,界面分类  4,系统调用 一、接口含义   用户接口(User Interface,简称 UI)是系统和用户之间进行交互和信息交换的媒介,它...
  • Intel的CPU将特权级别分为4个级别 RING0 RING1 RING2 RING3 Windows只使用其中的两个
  • 实验三十三 Windows Server 2012 RDS桌面虚拟化之四...标准部署形式的桌面虚拟化分为托管共享桌面虚拟化、非托管共享桌面虚拟化、托管个人桌面虚拟化、非托管个人桌面虚拟化。托管指的是自动创建和管理虚拟机,就是基于
  • Windows 集群

    千次阅读 2015-07-08 14:34:36
    仔细看过以前网友发表的一些文章,林林总总,分门别类,但总觉得对windows集群没有做一个详细介绍,所在这里我想对Windows集群做一个详细明了的概述。 目前应用最为广泛的集群计算技术可以分为三大类:高可用性集群...
  • 操作系统(15)-Linux的用户权限

    千次阅读 2019-11-18 21:33:49
    这一点比Windows可优秀多了。 一个用户操作Linux需要经过三个步骤的权限认证: Authentication:认证 Authorization:授权 Audition审计-->权限是否符合条例 Linux中有账户的概念:账户实质上就是一个用户在...
  • 实验三十四 Windows Server 2012 RDS桌面虚拟化之五...标准部署形式的桌面虚拟化分为托管共享桌面虚拟化、非托管共享桌面虚拟化、托管个人桌面虚拟化、非托管个人桌面虚拟化。托管指的是自动创建和管理虚拟机,就是基
  • 在之前的博客中,已经按照标准部署进行了配置,基本上标准的部署已经完成,但是在IT环境中,细节决定成败,在我们通过Web进行访问RemoteApp程序时候,总会有一些警告和阻拦,这些问题虽然不影响到用户的使用,但是这...
  • 实验三十一 Windows Server 2012 RDS桌面虚拟化之二...标准部署形式的桌面虚拟化分为托管共享桌面虚拟化、非托管共享桌面虚拟化、托管个人桌面虚拟化、非托管个人桌面虚拟化。托管指的是自动创建和管理虚拟机,就是基
  • Windows Redis 整理

    万次阅读 2020-08-06 15:25:42
    Windows Redis 安装 链接: https://pan.baidu.com/s/1MJnzX_qRuNXJI09euzkPGA 提取码: 2c6w 复制这段内容后打开百度网盘手机App,操作更方便哦 无脑下一步即可 使用 出现错误: creating server tcp listening ...
  • 实验三十二 Windows Server 2012 RDS桌面虚拟化之三VDI...标准部署形式的桌面虚拟化分为托管共享桌面虚拟化、非托管共享桌面虚拟化、托管个人桌面虚拟化、非托管个人桌面虚拟化。托管指的是自动创建和管理虚拟机,就
  • windows 8

    千次阅读 2011-09-16 08:48:11
    业界对Windows 8的初步印象很好,不过微软今天推出的Windows 8仍是一款预装版。 Windows8主界面  微软目前没有透露Windows 8正式版推出的具体时间,但业界认为,至少可能要到一年以后,这种...
  • Linux 用户管理及用户权限设置

    万次阅读 2019-01-27 11:22:58
    Linux 系统是一个多用户多任务的...另一方面也可以帮助用户组织文件,并为用户提供安全性保护。每个用户账号都拥有一个惟一的用户名和各自的口令。用户在登录时键入正确的用户名和口令后,就能够进入系统和自己的主...
  • Windows下MySQL的安装

    万次阅读 多人点赞 2019-06-21 02:03:21
    Windows下MySQL的安装 正在更新
  • Windows编程特点

    千次阅读 2014-06-24 23:20:35
    一个完整的Windows应用程序除了WinMain函数外,还包含用于处理用户动作和窗口消息的窗口函数。这不同于一个C++控制台应用程序,可以将整个程序包含在main函数中。当然,他们的区别还远不止这些。一个Windows应用程序...
  • 用户组和用户的详细解释

    千次阅读 2018-05-29 09:18:54
    whoami 查看当前登录用户名 /etc/... /etc/group 文件是用户组的配置文件,内容包括用户用户组,并且能显示出用户是归属哪个用户组或哪几个用户组,因为一个用户可以归属一个或多个不同的用户组;同一用 户组的...
  • 如何调用API实现WINDOWS编程

    千次阅读 2009-12-28 22:03:00
    Windows给我们提供的API可以分为两种,16位的API和32位的API,经常写为Win16 API和Win32 API。主要是针对CPU的位数才有的16位和32位,现在的系统基本上全是32位的了。所以现在主要是Win32 API。 API其实是系统留给...
  • Windows启动过程详解

    万次阅读 多人点赞 2018-02-24 12:00:22
    我们每天都在和Windows打交道,很多人可能每天都要面对多次Windows的启动过程,可是您知道在Windows的启动过程背后,隐藏着什么秘密吗?在这一系列过程中都用到了哪些重要的系统文件?系统的启动分为几个步骤?在...
  • Windows Azure的账户体系

    千次阅读 2014-03-23 00:28:54
    Windows Azure将客户分为两种基本类型:标准客户和企业协议客户。企业协议客户(EnterpriseAgreement Customer,简称为EA客户)是指在协议中承诺了每年一定使用量的大客户,这类客户一般享受较深的折扣和更高的服务...
  • 关于Windows高DPI的一些简单总结

    千次阅读 2015-06-08 17:01:54
    我们知道,关于高DPI的支持, Windows XP时代就开始有了, 那时关于高DPI的支持比较简单, 但是从Vista/Win7 到现在Win8 /Win8.1, Windows关于高DPI的支持已经发生了很大的变化, 下面我们依次简单介绍下。...
  • Windows内核研究总结

    千次阅读 2016-02-05 11:07:22
    Windows 的体系结构 分析环境reactos0.3.1 ,i386体系] 了解了windows的体系结构才知道reactos到底要干什么,以及如何干,因为reactos的...从图上可以看出系统被分成内核模式和用户模式。 内核模式的构成文件是系
  • linux--用户用户

    千次阅读 2017-01-05 11:56:37
    linux下查看所有用户及所有用户组 groups 查看当前登录用户的组内成员 groups gliethttp 查看gliethttp用户所在的组,以及组内成员 whoami 查看当前登录用户名 /etc/group文件包含所有组 /etc/shadow和/etc/passwd...
  • Windows 注册表

    千次阅读 2014-08-14 19:45:32
    在64位的操作系统中有64位版本的注册表编辑器以及32版本的注册表编辑器,64版本的注册表在C:\Windows\regedit.exe,32位版本的在C:\Windows\SysWow64\regedit.exe。 注册表中的内容主要分为系统
  • Windows 7系统安装MySQL5.5.21图解

    万次阅读 多人点赞 2012-08-27 18:58:00
    安装为windows服务,还可以指定Service Name(服务标识名称),是否将mysql的bin目录加入到Windows PATH(加入后,就可以直接使用bin下的文件,而不用指出目录名,比如连接, “ mysql – u username – p ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 116,642
精华内容 46,656
关键字:

windows用户分为标准用户