2011-04-28 4 views
2

Когда я использую WindowsIdentity Олицетворение вроде этого:C# WindowsIdentity Олицетворение Не работает

WindowsIdentity newId = null; 
     WindowsImpersonationContext impersonatedUser = null; 

       Console.WriteLine("Name of the identity BEFORE impersonation: " 
    + WindowsIdentity.GetCurrent().Name + "."); 
       newId = new WindowsIdentity(_impersonationToken); 
       impersonatedUser = newId.Impersonate(); 
       Console.WriteLine("Name of the identity AFTER impersonation: " 
    + WindowsIdentity.GetCurrent().Name + "."); 

(Это используется для копирования файлов с компьютера на WinCE машине.)

Имя До и имя после продолжайте возвращать то же самое. Когда я смотрю @ newId Token после олицетворения, это не то же самое, что я использую для олицетворения. Токен, который я олицетворяю, ОПРЕДЕЛЕН, не тот же пользователь, что и тот, с которым я вошел.

У кого-нибудь есть предложения по поводу того, почему он не хочет использовать мой токен? (вл да, вчера он работал как шарм: с)

Это, как я генерировать свою фишку:

[DllImport("advapi32.dll", SetLastError = true, CharSet = CharSet.Unicode)] 
     public static extern bool LogonUser(String lpszUsername, String lpszDomain, String lpszPassword, 
      int dwLogonType, int dwLogonProvider, ref IntPtr phToken); 


LogonUser(Username, IPMachine, Password, 
          LOGON32_LOGON_NEW_CREDENTIALS, LOGON32_PROVIDER_DEFAULT, 
          ref _token); 

Это даст Преуспевающий логическое значение, так что нет ничего плохого в мой знак я думаю

+0

Считайте это? – eych

+0

Я получил эту работу, но я не могу вспомнить, как я это сделал, извините, матушка ... – Zarkos

ответ

0

Как вы создаете свой _impersonationToken?

Существует отличное решение для олицетворения на CodeProject. Глядя на это, вы можете дать вам несколько новых идей.

+1

привет, спасибо, но бесполезно. MSDN имеет отличный пример для его использования, я скопировал все это, и это было одно и то же :( – Zarkos

2
+0

Я пробовал это 2. Он продолжает давать мне то же имя – Zarkos

+0

Теперь я понимаю проблему. как user1 и, возможно, вы предоставляете учетные данные одного и того же пользователя (user1) для олицетворения и, следовательно, вы не можете увидеть разницу. Попробуйте запустить программу как user1 и во время запуска программы укажите учетные данные пользователя2 для олицетворения. : //msdn.microsoft.com/en-us/library/system.security.principal.windowsimpersonationcontext.aspx –

+1

Я пробовал и работает. http://msdn.microsoft.com/en-us/library/system .security.principal.windowsimpersonationcontext.aspx –

 Смежные вопросы

  • Нет связанных вопросов^_^