11.3 使用者环境.htm

来自「Windows2000后台服务程序开发手册」· HTM 代码 · 共 468 行 · 第 1/3 页

HTM
468
字号

            <P><FONT style="LINE-HEIGHT: 25px" face=Arial color=#3e77d7 size=3 
            Black><B style="LINE-HEIGHT: 25px">说明</B></FONT> </P>
            <P><FONT style="LINE-HEIGHT: 25px" face=arial color=#000000 
            size=2>假如现在处于模拟状态的线程下,则呼叫CreateThread建立另一个线程,新的线程将不会被模拟。另一种方式是,除非建立的线程明确地模拟一个权杖,否则所有使用CreateThread建立的线程皆会为了安全的行为而使用程序的权杖。</FONT></P>
            <P><FONT style="LINE-HEIGHT: 25px" face=arial color=#000000 
            size=2>这会导致某些非常难以发现的错误,因为您的程序代码可以模拟使用者,然后呼叫一个函数建立新的线程,以执行工作。这个新的线程不代表建立线程的安全性环境。在这个开发服务的案例中,通常会授予比预期中更多的存取权给线程,因此会在您的服务中产生一个安全性「漏洞」。</FONT></P>
            <HR style="LINE-HEIGHT: 25px">

            <P><FONT style="LINE-HEIGHT: 25px" face=arial color=#000000 
            size=2>当您的线程代表您的客户端完成执行时,线程会经由呼叫RevertToSelf恢复使用程序的权杖:</FONT></P>
            <DIV style="LINE-HEIGHT: 25px; BACKGROUND-COLOR: #d7d7d7"><FONT 
            style="LINE-HEIGHT: 25px" face=Arial size=3><PRE style="LINE-HEIGHT: 25px">BOOL RevertToSelf(VOID);</PRE></FONT></DIV>
            <HR style="LINE-HEIGHT: 25px">

            <P><FONT style="LINE-HEIGHT: 25px" face=Arial color=#3e77d7 size=3 
            Black><B style="LINE-HEIGHT: 25px">说明</B></FONT> </P>
            <P><FONT style="LINE-HEIGHT: 25px" face=arial color=#000000 
            size=2>为了改善模拟时的效能,不管您是否呼叫了LogonUser、OpenProcessToken,或使用某些其他函数取得您用来模拟的权杖,最好要避免取得比需要还多的权杖。通常您的服务会撷取或建立一个handle一次,在连接的状态资料中储存权杖的handle。然后服务在需要时可以使用储存的handle呼叫ImpersonateLoggedOnUser及RevertToSelf 
            函数,只有在连结被结束且不再需要权杖时才结束handle。</FONT></P>
            <HR style="LINE-HEIGHT: 25px">

            <P><FONT style="LINE-HEIGHT: 25px" face=arial color=#000000 
            size=2>现在您的服务可以经由任何通讯机制来代表客户端执行连接,以使客户端能够传递它的凭证给服务。另外,您的服务可以储存一组事先设定给各种客户端帐户使用的凭证。依据您服务的需求,这个方法是非常有效的。然而,在许多的案例中,一个更无接缝的方法是值得向往的。</FONT></P>
            <P><FONT style="LINE-HEIGHT: 25px" face=arial color=#3e72d7 
            size=4><B style="LINE-HEIGHT: 25px">模拟连接的客户端<BR 
            style="LINE-HEIGHT: 25px"> </B></FONT></P>
            <P><FONT style="LINE-HEIGHT: 25px" face=arial color=#000000 
            size=2>Windows提供了一种真正的模拟,它不需要您的服务取得一组凭证。这种模拟是连接导向的,但是除此以外,它与我们所讨论过的模拟技巧很类似。假如一个被授予信任的授权单位已经验证客户端,而且通讯媒介支援模拟时,您的服务可以自动地模拟客户端!</FONT></P>
            <P><FONT style="LINE-HEIGHT: 25px" face=arial color=#000000 
            size=2>表格11-5列出模拟所支援的连接方式,以及用来初始模拟与回复到程序权杖的函数。</FONT></P>
            <P><FONT style="LINE-HEIGHT: 25px" face=arial color=#000000 
            size=2>为了讨论每个模拟的种类,我们暂时离开网路通讯的主题,它可以用整本书来讨论。然而,前面章节所提的RoboService范例应用程序使用了命名管道完全地实作模拟的功能,而SSPIChat范例应用程序(在第十二章)则使用Security 
            Support Provider Interface(SSPI)来实作模拟(SSPI也在第十二章讨论)。</FONT></P>
            <P><FONT style="LINE-HEIGHT: 25px" face=arial color=#000000 
            size=2>表格11-5中谈论到的两个函数可以提出来深入地探讨。它们是ImpersonateSelf及SetThreadToken函数:</FONT></P>
            <DIV style="LINE-HEIGHT: 25px; BACKGROUND-COLOR: #d7d7d7"><FONT 
            style="LINE-HEIGHT: 25px" face=Arial size=3><PRE style="LINE-HEIGHT: 25px">BOOL ImpersonateSelf( <BR> SECURITY_IMPERSONATION_LEVEL ImpersonationLevel);</PRE></FONT></DIV>
            <P><FONT style="LINE-HEIGHT: 25px" face=arial color=#000000 
            size=2>ImpersonateSelf函数会复制您程序的权杖,建立一个TokenImpersonation类型的权杖,并且分派这个权杖给呼叫的线程。</FONT></P>
            <P><FONT style="LINE-HEIGHT: 25px" face=arial color=#000000 
            size=2>在实际的情形下,您通常不会使用ImpersonateSelf调整权杖的模拟等级。您或许宁可用它来建立模拟以调整线程,例如启用及停用权限,或启用及停用权杖中的群组,这只会影响个别的线程而非程序中的每个线程。RevertToSelf函数用来结束模拟。</FONT></P>
            <CENTER style="LINE-HEIGHT: 25px">
            <P></P>
            <P class=content_page><A 
            href="http://www.acejoy.com/Html/Article/network/6520061102101703_P2.html">上一页</A>&nbsp;&nbsp;<A 
            href="http://www.acejoy.com/Html/Article/network/6520061102101703.html">[1]</A>&nbsp;<A 
            href="http://www.acejoy.com/Html/Article/network/6520061102101703_P2.html">[2]</A>&nbsp;<STRONG><FONT 
            color=#ff0033>[3]</FONT></STRONG>&nbsp;<A 
            href="http://www.acejoy.com/Html/Article/network/6520061102101703_P4.html">[4]</A>&nbsp;<A 
            href="http://www.acejoy.com/Html/Article/network/6520061102101703_P5.html">[5]</A>&nbsp;&nbsp;<A 
            href="http://www.acejoy.com/Html/Article/network/6520061102101703_P4.html">下一页</A></P></DIV><BR><BR></CENTER></TD></TR></TBODY></TABLE>
      <TABLE style="CLEAR: both" cellSpacing=0 cellPadding=0 width="97%">
        <TBODY>
        <TR>
          <TD align=right>
            <TABLE>
              <TBODY>
              <TR>
                <TD>阅读:<SPAN id=news_hits></SPAN>
                  <SCRIPT src="11.3 使用者环境.files/GetHits.htm" 
                  type=text/JavaScript></SCRIPT>
                   次<BR>录入:<A 
                  href="http://www.acejoy.com/User/Info.Asp?UserName=admin">admin</A><BR><BR></TD></TR></TBODY></TABLE></TD></TR>
        <TR>
          <TD align=right>【 <A 
            href="http://www.acejoy.com/Comment.asp?ChannelID=1&amp;Action=Write&amp;InfoID=65">评论</A> 
            】 【 <A 
            href="http://www.acejoy.com/User/SendMail.asp?Title=Windows2000 服务器端应用程序开发设计指南-使用者环境" 
            target=_blank>推荐</A> 】 【 <A href="javascript:window.print()">打印</A> 
            】 </TD></TR></TBODY></TABLE>
      <TABLE style="CLEAR: both" width="97%" align=center>
        <TBODY>
        <TR>
          <TD>上一篇:<A 
            title="标题:Windows2000 服务器端应用程序开发设计指南-存取控制(3)&#13;&#10;作者:Jeffrey Richter Jason D. Clark&#13;&#10;更新:2006-10-30 23:09:41&#13;&#10;点击:353" 
            href="http://www.acejoy.com/Html/Article/network/6420061030230941.html">Windows2000 
            服务器端应用程序开发设计指南-存取控制(3)</A><BR>下一篇:<A 
            title="标题:Windows2000 服务器端应用程序开发设计指南-安全连接(1)&#13;&#10;作者:Jeffrey Richter Jason D. Clark&#13;&#10;更新:2006-11-3 18:38:49&#13;&#10;点击:719" 
            href="http://www.acejoy.com/Html/Article/network/6620061103183849.html">Windows2000 
            服务器端应用程序开发设计指南-安全连接(1)</A> </TD></TR></TBODY></TABLE></TD>
    <TD class=mr></TD></TR></TBODY></TABLE></DIV></DIV>
<DIV class=mframe>
<TABLE cellSpacing=0 cellPadding=0 width="100%" align=center>
  <TBODY>
  <TR>
    <TD class=tl></TD>
    <TD class=tm><SPAN class=tt>相关新闻</SPAN> </TD>
    <TD class=tr></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width="100%" align=center>
  <TBODY>
  <TR>
    <TD class=ml></TD>
    <TD class=mm>
      <TABLE height="100%" cellSpacing=5 cellPadding=0 width="100%" border=0>
        <TBODY>
        <TR>
          <TD vAlign=top>
            <SCRIPT language=javascript 
            src="11.3 使用者环境.files/GetCorrelative.htm"></SCRIPT>
          </TD></TR></TBODY></TABLE></TD>
    <TD class=mr></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width="100%" align=center>
  <TBODY>
  <TR>
    <TD class=tl></TD>
    <TD class=tm><SPAN class=tt>本文评论</SPAN> </TD>
    <TD class=tr></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width="100%" align=center>
  <TBODY>
  <TR>
    <TD class=ml></TD>
    <TD class=mm>
      <P>&nbsp;</P>
      <TABLE height="100%" cellSpacing=5 cellPadding=0 width="100%" border=0>
        <TBODY>
        <TR>
          <TD vAlign=top>
            <SCRIPT language=javascript 
            src="11.3 使用者环境.files/Comment.htm"></SCRIPT>
          </TD></TR></TBODY></TABLE></TD>
    <TD class=mr></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width="100%" align=center>
  <TBODY>
  <TR>
    <TD class=ml></TD>
    <TD class=mm></TD>
    <TD class=mr></TD></TR></TBODY></TABLE></DIV>
<TABLE id=footer cellSpacing=0 cellPadding=0 border=0>
  <TBODY>
  <TR style="LINE-HEIGHT: 130%" align=middle>
    <TD height=23>&nbsp;<A 
      href='javascript:window.external.addFavorite("http://www.acejoy.com","ACE开发者")'><FONT 
      color=#000000>加入收藏</FONT></A>&nbsp;- &nbsp;<A 
      href="http://www.acejoy.com/Help.asp?Action=aboutweb" target=_blank><FONT 
      color=#000000>关于本站</FONT></A>&nbsp;- &nbsp;<A class=Bottom 
      href="http://www.acejoy.com/Help.asp?Action=Copyright" target=_blank><FONT 
      color=#000000>版权申明</FONT></A>&nbsp;- &nbsp;<A class=Bottom 
      href="http://www.acejoy.com/Help.asp?Action=aboutweb" target=_blank><FONT 
      color=#000000>联系站长</FONT></A>&nbsp;- &nbsp;<A class=Bottom 
      href="http://www.acejoy.com/LinkSite.asp" target=_blank><FONT 
      color=#000000>友情链接</FONT></A>&nbsp;&nbsp; </TD></TR>
  <TR align=middle>
    <TD height=23>Copyright&copy; 2004-2006 <A 
      href="http://www.acejoy.com/">http://www.acejoy.com/</A> .All Rights 
      Reserved <A href="http://www.miibeian.gov.cn/" target=_blank>京ICP备06055248 
      </A>
      <SCRIPT language=JavaScript src="11.3 使用者环境.files/stat.htm" 
      charset=gb2312></SCRIPT>
    </TD></TR></TBODY></TABLE>
<DIV></DIV>
<DIV></DIV>
<DIV></DIV>
<DIV></DIV>
<DIV></DIV><!--Powered by:CreateLive CMS Version 3.1(www.acejoy.com) CreateDate:2007-3-4 10:50:36--></DIV></DIV></DIV></DIV></DIV></BODY></HTML>

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?