none
有关身份扮演的问题 RRS feed

  • 问题

  • 以前我提过关于怎样使用身份扮演的问题,有个网友这样给出的答案
    <requestedExecutionLevel level="requireAdministrator" uiAccess="false" />


    但是,如果在用到扮演的时候设置呢,而不使用全局扮演.
    人要诚实!还要踏实! 我先为人人,人人再为我! 我的Spaces: http://mydodu.spaces.live.com/
    2009年6月26日 23:54

答案

  • 你好!
         可以编程来实现,需要使用LogonUser这个Windows API,然后使用Impersonate方法来模拟:
         [DllImport("Advapi32.Dll")]
         static extern bool LogonUser(...);

         [DllImport("Kernel32.Dll")]
         static extern void CloseHandle(...);

         System.IntPtr pToken;
         if(LogonUser(...))
              WindowsIdentity.Impersonate(pToken);
         ...
         CloseHandle(pToken);
        
         就是这样模拟的,具体的地方你自己补充一下就可以使用了!
        
    周雪峰
    • 已标记为答案 Dodu.NET 2009年6月29日 0:24
    2009年6月27日 2:24
    版主
  • LogonUser(...) 这个api的参数是怎么设定的 ?
    人要诚实!还要踏实! 我先为人人,人人再为我! 我的Spaces: http://mydodu.spaces.live.com/
    • 已标记为答案 Dodu.NET 2009年6月29日 0:24
    2009年6月27日 15:58
  • 这样声明:
    [DllImport("advapi32.dll", SetLastError=true)]
    public static extern bool LogonUser(
        string lpszUsername,
        string lpszDomain,
        string lpszPassword,
        int dwLogonType,
        int dwLogonProvider,
        out IntPtr phToken
        );
    具体参数含义,可以查一下文档!
    周雪峰
    • 已标记为答案 Dodu.NET 2009年6月29日 0:24
    2009年6月28日 1:01
    版主

全部回复

  • 你好!
         可以编程来实现,需要使用LogonUser这个Windows API,然后使用Impersonate方法来模拟:
         [DllImport("Advapi32.Dll")]
         static extern bool LogonUser(...);

         [DllImport("Kernel32.Dll")]
         static extern void CloseHandle(...);

         System.IntPtr pToken;
         if(LogonUser(...))
              WindowsIdentity.Impersonate(pToken);
         ...
         CloseHandle(pToken);
        
         就是这样模拟的,具体的地方你自己补充一下就可以使用了!
        
    周雪峰
    • 已标记为答案 Dodu.NET 2009年6月29日 0:24
    2009年6月27日 2:24
    版主
  • LogonUser(...) 这个api的参数是怎么设定的 ?
    人要诚实!还要踏实! 我先为人人,人人再为我! 我的Spaces: http://mydodu.spaces.live.com/
    • 已标记为答案 Dodu.NET 2009年6月29日 0:24
    2009年6月27日 15:58
  • 这样声明:
    [DllImport("advapi32.dll", SetLastError=true)]
    public static extern bool LogonUser(
        string lpszUsername,
        string lpszDomain,
        string lpszPassword,
        int dwLogonType,
        int dwLogonProvider,
        out IntPtr phToken
        );
    具体参数含义,可以查一下文档!
    周雪峰
    • 已标记为答案 Dodu.NET 2009年6月29日 0:24
    2009年6月28日 1:01
    版主
  • xiexie!!
    人要诚实!还要踏实! 我先为人人,人人再为我! 我的Spaces: http://mydodu.spaces.live.com/
    2009年6月29日 0:24
  • 不客气啊!
    周雪峰
    2009年6月29日 2:16
    版主