<?xml version="1.0" encoding="GB2312"?>
<rss version="2.0">
<channel>
<title><![CDATA[【星梦影居】]]></title>
<link>http://xwaixwz.teamdo.com.cn/index.html</link>
<description><![CDATA[【星梦影居】]]></description>
<item>
<title><![CDATA[Windows进程通信]]></title>
<link>http://xwaixwz.teamdo.com.cn/archives/2007/47687.html</link>
<description><![CDATA[
<P>1、引言<BR>　　在Windows程序中，各个进程之间常常需要交换数据，进行数据通讯。WIN32 API提<BR>供了许多函数使我们能够方便高效地进行进程间的通讯，通过这些函数我们可以控制不<BR>同进程间的数据交换，就如同在WIN16中对本地进程进行读写操作一样。<BR>　　典型的WIN16两进程可以通过共享内存来进行数据交换：<BR>（1）进程A将GlobalAlloc（GMEM_SHARE...）API分配一定长度的内存；（2）进程A将G<BR>lobalAlloc函数返回的句柄传递给进程B（通过一个登录消息）；（3）进程B对这个句柄<BR>调用GlobalLock函数，并利用GlobalLock函数返回的指针访问数据。这种方法在WIN32中<BR>可能失败，这是因为GlobalLock函数返回指向的是进程A的内存，由于进程使用的是虚拟<BR>地址而非实际物理地址，因此这一指针仅与A进程有关，而于B进程无关。<BR>　　本文探讨了几种WIN32下进程之间通讯的几种实现方法，读者可以使用不同的方<BR>法以达到程序运行高效可靠的目的。<BR>　　2、Windows95中进程的内存空间管理<BR>　　WIN32进程间通讯与Windows95的内存管理有密切关系，理解Windows95的内存管理对<BR>我们如下的程序设计将会有很大的帮助，下面我们讨论以下Windows95中进程的内存空间<BR>管理。<BR>　　在WIN16下，所有Windows应用程序共享单一地址，任何进程都能够对这一空间中属<BR>于共享单一的地址空间和属于其他进程的内存进行读写操作，甚至可以存取操作系统本<BR>身的数据，这样就可能破坏其他程序的数据段代码。<BR>　　在WIN32下，每个进程都有自己的地址空间，一个WIN32进程不能存取另一个地<BR>址的私有数据，两个进程可以用具有相同值的指针寻址，但所读写的只是它们各自<BR>的数据，这样就减少了进程之间的相互干扰。另一方面，每个WIN32进程拥有4GB的<BR>地址空间，但并不代表它真正拥有4GB的实际物理内存，而只是操作系统利用CPU的<BR>内存分配功能提供的虚拟地址空间。在一般情况下，绝大多数虚拟地址并没有物理<BR>内存与它对应，在真正可以使用这些地址空间之前，还要由操作系统提供实际的物<BR>理内存（这个过程叫&amp;ldquo;提交&amp;rdquo;commit）。在不同的情况下，系统提交的<BR>物理内存是不同的，可能是RAM，也可能是硬盘模拟的虚拟内存。<BR>　　3、WIN32中进程间的通讯<BR>　　在Windows 95中，为实现进程间平等的数据交换，用户可以有如下几种选择：<BR>　　＊ 使用内存映射文件<BR>　　＊ 通过共享内存DLL共享内存<BR>　　＊ 向另一进程发送WM_COPYDATA消息<BR>　　＊ 调用ReadProcessMemory以及WriteProcessMemory函数，用户可以发送由<BR>GlobalLock(GMEM_SHARE,...)函数调用提取的句柄、GlobalLock函数返回的指针以<BR>及VirtualAlloc函数返回的指针。<BR>　　3.1、利用内存映射文件实现WIN32进程间的通讯<BR>　　Windows95中的内存映射文件的机制为我们高效地操作文件提供了一种途径，<BR>它允许我们在WIN32进程中保留一段内存区域，把目标文件映射到这段虚拟内存中。<BR>在程序实现中必须考虑各进程之间的同步。具体实现步骤如下：<BR>　　首先我们在发送数据的进程中需要通过调用内存映射API函数<BR>CreateFileMapping<BR>创建一个有名的共享内存：<BR>　　HANDLE CreateFileMapping(<BR>　　HANDLE hFile, // 映射文件的句柄，<BR>　　//设为0xFFFFFFFF以创建一个进程间共享的对象<BR>　　LPSECURITY_ATTRIBUTES lpFileMappingAttributes, // 安全属性<BR>　　DWORD flProtect, // 保护方式<BR>　　DWORD dwMaximumSizeHigh, //对象的大小<BR>　　DWORD dwMaximumSizeLow,<BR>　　LPCTSTR lpName // 必须为映射文件命名<BR>　　);<BR>　　与虚拟内存类似，保护方式可以是PAGE_READONLY或是PAGE_READWRITE。如果多进程<BR>都对同一共享内存进行写访问，则必须保持相互间同步。映射文件还可以指定PAGE_WRI<BR>TECOPY标志，可以保证其原始数据不会遭到破坏，同时允许其他进程在必要时自由地操<BR>作数据的拷贝。<BR>　　在创建文件映射对象后使用可以调用MapViewOfFile函数映射到本进程的地址<BR>空间内。<BR>　　下面说明创建一个名为MySharedMem的长度为4096字节的有名映射文件：<BR>　　HANDLE hMySharedMapFile=CreateFileMapping((HANDLE)0xFFFFFFFF)，<BR>　　NULL，PAGE_READWRITE，0，0x1000，&amp;ldquo;MySharedMem&amp;rdquo;)；<BR>　　并映射缓存区视图：<BR>　　LPSTR pszMySharedMapView=(LPSTR)MapViewOfFile(hMySharedMapFile，<BR>　　FILE_MAP_READ|FILE_MAP_WRITE，0，0，0)；<BR>　　其他进程访问共享对象，需要获得对象名并调用OpenFileMapping函数。<BR>　　HANDLE hMySharedMapFile=OpenFileMapping(FILE_MAP_WRITE，<BR>　　FALSE，&amp;ldquo;MySharedMem");<BR>　　一旦其他进程获得映射对象的句柄，可以像创建进程那样调用MapViewOfFile函数来<BR>映射对象视图。用户可以使用该对象视图来进行数据读写操作，以达到数据通讯的目的<BR>。<BR>　　当用户进程结束使用共享内存后，调用UnmapViewOfFile函数以取消其地址空间内的<BR>视图：<BR>　　if (!UnmapViewOfFile(pszMySharedMapView))<BR>　　{ AfxMessageBox(&amp;ldquo;could not unmap view of file"); }<BR>　　3.2、利用共享内存DLL<BR>　　共享数据DLL允许进程以类似于Windows 3.1 DLL共享数据的方式访问读写数据，多<BR>个进程都可以对该共享数据DLL进行数据操作，达到共享数据的目的。在WIN32中为建立<BR>共享内存，必须执行以下步骤：<BR>　　首先创建一个有名的数据区。这在Visual C＋＋中是使用data_seg pragma宏。<BR>使用data_seg pragma宏必须注意数据的初始化：<BR>　　＃pragma data_seg(&amp;ldquo;MYSEC")<BR>　　char MySharedData[4096]={0};<BR>　　＃pragma data_seg()<BR>　　然后在用户的DEF文件中为有名的数据区设定共享属性。<BR>　　LIBRARY TEST<BR>　　DATA READ WRITE<BR>　　SECTIONS<BR>　　.MYSEC READ WRITE SHARED<BR>　　这样每个附属于DLL的进程都将接受到属于自己的数据拷贝，一个进程的数据<BR>变化并不会反映到其他进程的数据中。<BR>　　在DEF文件中适当地输出数据。以下的DEF文件项说明了如何以常数变量的形式<BR>输出MySharedData。<BR>　　EXPORTS<BR>　　MySharedData CONSTANT<BR>　　最后在应用程序（进程）按外部变量引用共享数据。<BR>　　extern _export"C"{char ＊ MySharedData[]}<BR>　　进程中使用该变量应注意间接引用。<BR>　　m_pStatic=(CEdit＊)GetDlgItem(IDC_SHARED);<BR>　　m_pStatic－&gt;GetLine(0,＊MySharedData,80);<BR>3.3、用于传输只读数据的WM_COPYDATA<BR>　　传输只读数据可以使用Win32中的WM_COPYDATA消息。该消息的主要目的是允许在进<BR>程间传递只读数据。Windows95在通过WM_COPYDATA消息传递期间，不提供继承同步方式<BR>。SDK文档推荐用户使用SendMessage函数，接受方在数据拷贝完成前不返回，这样发送<BR>方就不可能删除和修改数据：<BR>　　SendMessage(hwnd,WM_COPYDATA,wParam,lParam);<BR>　　其中wParam设置为包含数据的窗口的句柄。lParam指向一个COPYDATASTRUCT的结构<BR>：<BR>　　typedef struct tagCOPYDATASTRUCT{<BR>　　DWORD dwData;//用户定义数据<BR>　　DWORD cbData;//数据大小<BR>　　PVOID lpData;//指向数据的指针<BR>　　}COPYDATASTRUCT;<BR>　　该结构用来定义用户数据。<BR>　　3.4、直接调用ReadProcessMemory和WriteProcessMemory函数实现进程间通讯<BR>　　通过调用ReadProcessMemory以及WriteProcessMemory函数用户可以按类似与Windo<BR>ws3.1的方法实现进程间通讯，在发送进程中分配一块内存存放数据，可以调用GlobalA<BR>lloc或者VirtualAlloc函数实现：<BR>　　pApp&amp;rarr;m_hGlobalHandle=GlobalAlloc(GMEM_SHARE,1024);<BR>　　可以得到指针地址：pApp&amp;rarr;<BR>mpszGlobalHandlePtr=(LPSTR)GlobalLock(pApp&amp;r<BR>arr;m_hGlobalHandle);<BR>　　在接收进程中要用到用户希望影响的进程的打开句柄。为了读写另一进程，应<BR>按如下方式调用OpenProcess函数：<BR>　　HANDLE hTargetProcess=OpenProcess(<BR>　　STANDARD_RIGHTS_REQUIRED|<BR>　　PROCESS_VM_REDA|<BR>　　PROCESS_VM_WRITE|<BR>　　PROCESS_VM_OPERATION,//访问权限<BR>　　FALSE,//继承关系<BR>　　dwProcessID);//进程ID<BR>　　为保证OpenProcess函数调用成功，用户所影响的进程必须由上述标志创建。<BR>　　一旦用户获得一个进程的有效句柄，就可以调用ReadProcessMemory函数读取该<BR>进程的内存：<BR>　　BOOL ReadProcessMemory(<BR>　　HANDLE hProcess, // 进程指针<BR>　　LPCVOID lpBaseAddress, // 数据块的首地址<BR>　　LPVOID lpBuffer, // 读取数据所需缓冲区<BR>　　DWORD cbRead, // 要读取的字节数<BR>　　LPDWORD lpNumberOfBytesRead<BR>　　);<BR>　　使用同样的句柄也可以写入该进程的内存：<BR>　　BOOL WriteProcessMemory(<BR>　　HANDLE hProcess, // 进程指针<BR>　　LPVOID lpBaseAddress, // 要写入的首地址<BR>　　LPVOID lpBuffer, // 缓冲区地址<BR>　　DWORD cbWrite, // 要写的字节数<BR>　　LPDWORD lpNumberOfBytesWritten<BR>　　 );<BR>　　如下所示是读写另一进程的共享内存中的数据：<BR>　　ReadProcessMemory((HANDLE)hTargetProcess,(LPSTR)lpsz,m_strGlobal.GetBuff<BR>er(_MAX_FIELD),<BR>　　_MAX_FIELD,＆cb);<BR>　　WriteProcessMemory((HANDLE)hTargetProcess,(LPSTR)lpsz,(LPSTR)STARS,<BR>　　m_strGlobal.GetLength(),＆cb);<BR>　　4、进程之间的消息发送与接收<BR>　　在实际应用中进程之间需要发送和接收Windows消息来通知进程间相互通讯，<BR>发送方发送通讯的消息以通知接收方，接收方在收到发送方的消息后就可以对内<BR>存进行读写操作。<BR>　　我们在程序设计中采用Windows注册消息进行消息传递，首先在发送进程初始<BR>化过程中进行消息注册：<BR>　　m_nMsgMapped=::RegisterWindowsMessage(&amp;ldquo;Mapped&amp;rdquo;);<BR>　　m_nMsgHandle=::RegisterWindowsMessage(&amp;ldquo;Handle&amp;rdquo;);<BR>　　m_nMsgShared=::RegisterWindowsMessage(&amp;ldquo;Shared&amp;rdquo;);<BR>　　在程序运行中向接收进程发送消息：<BR>　　CWnd＊ pWndRecv=FindWindow(lpClassName,&amp;ldquo;Receive&amp;rdquo;);<BR>　　pWndRecv&amp;rarr;SendMessage(m_MsgMapped,0,0);<BR>　　pWndRecv&amp;rarr;SendMessage(m_nMsgHandle,(UINT)GetCurrentProcessID(),<BR>(LONG)pApp&amp;rarr;m_hGlobalHandle);<BR>　　pWndRecv&amp;rarr;SendMessage(m_nMsgShared,0,0);<BR>　　可以按如下方式发送WM_COPYDATA消息：<BR>　　static COPYDATASTRUCT cds;//用户存放数据pWnd&amp;rarr;<BR>SendMessage(WM_COPYDATA,NULL,(LONG)＆cds);<BR>　　接收方进程初始化也必须进行消息注册：<BR>　　UNIT CRecvApp:: m_nMsgMapped=::RegisterWindowsMessage(&amp;ldquo;<BR>Mapped&amp;rdquo;);<BR>　　UNIT CRecvApp::m_nMsgHandle=::RegisterWindowsMessage(&amp;ldquo;<BR>Handle&amp;rdquo;);<BR>　　UNIT CRecvApp::m_nMsgShared=::RegisterWindowsMessage(&amp;ldquo;<BR>Shared&amp;rdquo;);<BR>　　同时映射消息函数如下:<BR>　　ON_REGISTERED_MASSAGE(CRecvApp::m_nMsgMapped,OnRegMsgMapped)<BR>　　ON_REGISTERED_MASSAGE(CRecvApp::m_nMsgHandle,OnRegMsgHandle)<BR>　　ON_REGISTERED_MASSAGE(CRecvApp::m_nMsgShared,OnRegMsgShared)<BR>　　有这些消息函数我们就可以采用上述技术实现接收进程中数据的读写操作了。<BR><BR>　　5、结束语<BR>　　从以上分析中我们可以看出Windows9X的内存管理对进程之间的通讯有较为严<BR>格的限制。这就确保了任何故障程序无法意外地写入用户的地址空间，而用户则可<BR>根据实际情况灵活地进行进程间的数据通讯，从这一点上来讲Windows95增强了应<BR>用程序的强壮性。</P>
<P>&nbsp;</P>
<P>相关链接：<A href="http://www.chinaicmart.com/suppliers/813/79RC32355180DH.html">79RC32355180DH</A>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href="http://www.chinaicmart.com/suppliers/812/79L18.html" title="http://blog.teamdo.com.cn/manager/79L18" target="_blank">79L18</a></P>]]></description>
<author>xwaixwz</author>
<pubDate>2007-10-25 17:05:00</pubDate>
</item>
<item>
<title><![CDATA[微软IE浏览器的安全使用及其设置的技巧]]></title>
<link>http://xwaixwz.teamdo.com.cn/archives/2007/47662.html</link>
<description><![CDATA[<P>如今上网冲浪已经成为我们生活中不可或缺的一部分，但上网冲浪的安全性也成了<BR>上<BR>至网络安全专家下至平民百姓们高度关注的问题。其实，对于普通用户来说，我们并不<BR>关<BR>心“XX程序出现严重安全漏洞……”之类的问题，以及从技术的角度应该如何补救。虽<BR>然<BR>我们应该知道这样的漏洞会对我们造成什么样的伤害，但我们更应该了解的是怎么做、<BR>如<BR>何进行一些简单的设置来尽可能地避免遭受攻击，安全地上网冲浪。<BR><BR>上网冲浪离不开浏览器，但浏览网页时是否安全呢？是否看到过这样的报道：“当<BR>心<BR>，浏览网页硬盘会被共享！”“可以格式化硬盘的网页代码”等等，这些绝不是危言耸<BR>听<BR>，这些在技术上是存在可行性的。在这儿我只想提醒大家来关注浏览网页时的安全性问<BR>题<BR>。<BR><BR>现在的浏览器市场上说不上百家争鸣，但也有数十种了，可以说是各有特色。微软<BR>的<BR>新一代浏览器IE 6.0因为采用开放的标准并加强了对Cookie的管理而受到普遍欢迎。它<BR>是<BR>在IE 5.5基础上发展而来的，能够完全兼容Windows 98/Me/2000操作系统，而且微软采<BR>用<BR>了隐私标准P3P。从理论上看，能更安全地访问网页。如果你访问的网页不符合指定的最<BR>低<BR>安全要求，IE 6.0将在任务栏上发出警告。<BR><BR>下面我们就来看一下IE 6.0的安全使用及设置技巧。<BR><BR>1、管理Cookie的技巧<BR><BR>在IE 6.0中，打开IE的“工具”菜单的“Internet属性”，专门增加了“隐私”标<BR>签<BR>来管理Cookie。<BR><BR>IE 6.0的Cookie策略可以设定成从“阻止所有Cookie”、“高”、“中高”、“中<BR>”<BR>、“低”、“接受所有Cookie”六个级别(默认级别为“中”)，分别对应从严到松的Coo<BR>k<BR>ie策略，可以使我们很方便地根据需要进行设定。而对于一些特定的网站，单击图1中的<BR>“<BR>编辑”，还可以将其设定为“一直可以或永远不可以使用Cookie”。<BR><BR>通过IE 6.0的Cookie策略，就能个性化地设定浏览网页时的Cookie规则，更好地保<BR>护<BR>自己的信息，增加使用IE的安全性。例如，在默认级别“中”时，IE允许网站将Cookies<BR>放<BR>入你的电脑，但拒绝第三方的操作，例如缺少P3P安全协议的广告商。所以，安全标签选<BR>项<BR>能方便地控制安全级别。<BR><BR>2、禁用或限制使用Java、Java小程序脚本、ActiveX控件和插件<BR><BR>由于互联网上(如在浏览web页和在聊天室里)经常使用Java、JavaApplet、ActiveX<BR>编<BR>写的脚本，它们可能会获取你的用户标识、IP地址，乃至口令，甚至会在你的机器上安<BR>装<BR>某些程序或进行其他操作。因此应对Java、Java小程序脚本、ActiveX控件和插件的使用<BR>进<BR>行限制。<BR><BR>在IE的“工具”菜单的“Internet属性”窗口的“安全”标签中打开“自定义级别<BR>”<BR>，就可以进行设置。在这里可以设置“ActiveX控件和插件”、“Java”、“脚本”、“<BR>下<BR>载”、“用户验证”以及其他安全选项。对于一些不安全或不太安全的控件或插件以及<BR>下<BR>载操作，应该予以禁止、限制或至少要进行提示。<BR><BR>3、调整自动完成功能的设置<BR><BR>缺省条件下，用户在第一次使用Web地址、表单、表单的用户名和密码后(如果同意<BR>保<BR>存密码)，在下一次再想进入同样的Web页及输入密码时，只需输入开头部分，后面的就<BR>会<BR>自动完成，给用户带来了便利，但同时也带来了安全问题。<BR><BR>可以通过调整“自动完成”功能的设置，来解决该问题。可以做到只选择针对Web地<BR>址<BR>、表单和密码使用“自动完成”功能，也可以只在某些地方使用此功能，还可以清除任<BR>何<BR>项目的历史记录。<BR><BR>具体设置方法如下：<BR><BR>(1)在Internet Explorer的“工具”菜单上，单击“Internet选项”。<BR><BR>(2)单击“内容”标签。<BR><BR>(3)在“个人信息”区域，单击“自动完成”。<BR><BR>(4)选中要使用的“自动完成”选项的复选框。<BR><BR>为了安全起见，防止泄露自己的一些信息，应该定期清除历史记录，这时只需在第4<BR>步<BR>点击“清除表单”和“清除密码”按钮即可。<BR><BR>4、经常清除已浏览网址(URL)<BR><BR>按一下地址栏的下拉菜单，已访问过的站点无一遗漏、尽在其中。我可不想让别人<BR>知<BR>道我刚才访问了哪些站点，怎么办？用鼠标右键点击桌面上的IE图标，打开“工具→Int<BR>e<BR>rnt属性”，在“常规”标签下单击历史记录区域的“清除历史记录”按钮。这时系统会<BR>弹<BR>出警告“是否确实要让Windows删除已访问过网站的历史记录？”，选择“是”就行了。<BR><BR><BR>若只想清除部分记录，单击浏览器工具栏上的“历史”按钮，在右栏的地址历史记<BR>录<BR>中，用鼠标右键选中某一希望清除的地址或其下一网页，选取“删除”。也可用编辑注<BR>册<BR>表的方法达到目的，在注册表编辑器中，找到HKEY＼CURRENT_USER＼Software＼Microso<BR>f<BR>t＼Internet Explorer＼TypedURLs，在右栏中删去不想再让其出现的主键即可，记着要<BR>让<BR>urlx(x代表序号)以自然顺序排列。<BR><BR>5、清除已访问网页<BR><BR>为了加快浏览速度，IE会自动把你浏览过的网页保存在缓存文件夹C:＼Windows＼Te<BR>m<BR>porary Internet Files下。当你确信已浏览过的网页不再需要时，在该文件夹下全选所<BR>有<BR>网页，删除即可。或者打开IE的“工具→Internt属性”，在“常规”标签下单击“Inte<BR>r<BR>net临时文件”项目的“删除文件”按钮，会弹出警告，选中“删除所有脱机内容”，单<BR>击<BR>“确定”按钮就可以了。<BR><BR>这种方法不太彻底，会留少许Cookies在文件夹内。在IE 6.0中，“删除文件”按钮<BR>旁<BR>边还有一个“删除Cookies”按钮，通过它可以很方便地删除遗留的Cookies。<BR><BR>上面我们介绍的只是如何安全使用IE 6.0的一些小技巧，其实，要想做到“上网无<BR>忧<BR>，安全冲浪”，应该注意的问题很多，比如：安装个人防火墙和病毒防火墙、及时更新<BR>杀<BR>毒软件、使用安全合理的密码口令、不随意下载和运行不明软件，最后，还要禁得住一<BR>些<BR>恶意网站的诱惑。只有养成良好的上网习惯，才能保证“防黑于未然”。</P>
<P>相关链接：<a href="http://www.chinaicmart.com/suppliers/808/78253-35V.html" title="http://blog.teamdo.com.cn/manager/78253/35V" target="_blank">78253/35V</a>                     <a href="http://www.chinaicmart.com/suppliers/820/802-4.html" title="http://blog.teamdo.com.cn/manager/802-4" target="_blank">802-4</a></P>]]></description>
<author>xwaixwz</author>
<pubDate>2007-10-24 17:05:00</pubDate>
</item>
<item>
<title><![CDATA[如何解除Windows XP系统的文件共享限制]]></title>
<link>http://xwaixwz.teamdo.com.cn/archives/2007/47595.html</link>
<description><![CDATA[笔者的很多朋友都曾遇到过这样的问题：在安装了Windows XP的计算机上，即使网络连接和共享设置正确（如IP地址属于同一子网，启用了TCP/IP上的NetBIOS，防火墙软件没有禁止文件共享需要的135、137、138、139等端口），使用其他系统（包括Windows 9X/Me/2000/XP等）的用户仍然无法访问该计算机。我们应该怎样解决这一问题呢? 
<P>&nbsp;&nbsp;&nbsp; 默认情况下，Windows XP的本地安全设置要求进行网络访问的用户全部采用来宾方式。同时，在Windows XP安全策略的用户权利指派中又禁止Guest用户通过网络访问系统。这样两条相互矛盾的安全策略导致了网内其他用户无法通过网络访问使用Windows XP的计算机。你可采用以下方法解决。</P>
<P>&nbsp;<STRONG>&nbsp;&nbsp; 方法一 解除对Guest账号的限制</STRONG></P>
<P>&nbsp;&nbsp;&nbsp; 点击“开始→运行”，在“运行”对话框中输入“GPEDIT.MSC”，打开组策略编辑器，依次选择“计算机配置→Windows设置→安全设置→本地策略→用户权利指派”，双击“拒绝从网络访问这台计算机”策略（见图），删除里面的“GUEST”账号。这样其他用户就能够用Guest账号通过网络访问使用Windows XP系统的计算机了。</P>
<P><STRONG>&nbsp;&nbsp;&nbsp; 方法二 更改网络访问模式</STRONG></P>
<P>&nbsp;&nbsp;&nbsp; 打开组策略编辑器，依次选择“计算机配置→Windows设置→安全设置→本地策略→安全选项”，双击“网络访问：本地账号的共享和安全模式”策略，将默认设置“仅来宾—本地用户以来宾身份验证”，更改为“经典：本地用户以自己的身份验证”。</P>
<P>&nbsp;&nbsp;&nbsp; 现在，当其他用户通过网络访问使用Windows XP的计算机时，就可以用自己的“身份”进行登录了（前提是Windows XP中已有这个账号并且口令是正确的）。</P>
<P>&nbsp;&nbsp;&nbsp; 当该策略改变后，文件的共享方式也有所变化，在启用“经典：本地用户以自己的身份验证”方式后，我们可以对同时访问共享文件的用户数量进行限制，并能针对不同用户设置不同的访问权限。</P>
<P>&nbsp;&nbsp;&nbsp; 不过我们可能还会遇到另外一个问题，当用户的口令为空时，访问还是会被拒绝。原来在“安全选项”中有一个“账户：使用空白密码的本地账户只允许进行控制台登录”策略默认是启用的，根据Windows XP安全策略中拒绝优先的原则，密码为空的用户通过网络访问使用Windows XP的计算机时便会被禁止。我们只要将这个策略停用即可解决问题。</P>
<P>&nbsp;</P>
<P>相关链接：<A href="http://www.chinaicmart.com/suppliers/816/7BT2L3D-364.html">7BT2L3D-364</A></P>]]></description>
<author>xwaixwz</author>
<pubDate>2007-10-22 15:16:00</pubDate>
</item>

</channel>
</rss>