tutorials.de Buch-Aktion 05/2012
Like Tree1Danke
  • 1 Beitrag von Thomas Darimont
ERLEDIGT
NEIN
ANTWORTEN
3
ZUGRIFFE
1510
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    r_maniac r_maniac ist offline Mitglied
    Registriert seit
    Feb 2010
    Beiträge
    10
    Halo!
    ich arbeite momentan an einen project wo ich auch unter anderen windows login funktion realisieren soll.

    gibt es vieleicht eine möglichkeit mit .net (c sharp) in ein dienst loginfunktion zu intergrieren ? fieleicht ein konsole command oder .net methode für automatisazion.
     

  2. #2
    r_maniac r_maniac ist offline Mitglied
    Registriert seit
    Feb 2010
    Beiträge
    10
    Hab gestern eibischen mit Windows SDK gespielt:

    Habe folgendes ausgefunden:
    mit funktion LogonUser kann man(theoretisch) Windows benutzer auf lokalen PC anmelden
    Code :
    1
    2
    
    [DllImport("advapi32.dll")]
            public static extern bool LogonUser(string lpszUsername, string lpszDomain, string Password, int dwLogonType, int dwLogonProvider, out int phToken);
    aber dabei habe ich auf folgende problem gestossen - wenn ich folgende code ausfüren lasse(einfache Form mit button) meldet mir programm dass benutzer erfogreich angemeldet ist... in task manager sehe ich aber nur mich selbst als angemeldete user. könnte mir jemand sagen wo lieg das Problem

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    
    private void login_Click(object sender, EventArgs e)
            {
                string uid = "test",pwd="test";
                int token1;
                if (LogonUser(uid, ".", pwd, 2, 0, out token1))
                {
                    System.Windows.Forms.MessageBox.Show("Benutzer login erfolgreich", "",
                               System.Windows.Forms.MessageBoxButtons.OK,
                               System.Windows.Forms.MessageBoxIcon.Information);
                }
                else
                {
                    System.Windows.Forms.MessageBox.Show("Benutzer login fehlgeshlagen", "",
                               System.Windows.Forms.MessageBoxButtons.OK,
                               System.Windows.Forms.MessageBoxIcon.Information);
                }

    dabei wird ja der paswort und die name überprüft, denn wenn ich falsche angabe mache wird von fehler berichtet
     

  3. #3
    Avatar von RudolfG
    RudolfG RudolfG ist offline Mitglied Brokat
    Registriert seit
    Jul 2006
    Ort
    Gummersbach (NRW)
    Beiträge
    337
    Hi,

    was möchtest du den mit diesem angemeldeten Benutzer machen?

    Laut der Doku wird dir bei erfolgreicher Anmeldung ein Token des Benutzers zurückgeliefert, mit diesem kannst du dann z. B. Prozesse als dieser Benutzer starten.

    Mit Hilfe dieser Funktion kann man für kritische Funktionen z. B. das Admin-Passwort überprüfen lassen und dann ein Programm als "Administrator" starten etc.

    Für die "wirkliche" Anmeldung ist diese Funktion nicht geeignet.

    Gruß
    RudolfG
     
    Technologien
    (Gute) Grundkenntnisse: HTML, CSS
    Fortgeschrittene-Kenntnisse: C++/Qt, C# (WinForms, Webservice), SQL

  4. #4
    Registriert seit
    Jun 2002
    Ort
    Saarbrücken (Saarland)
    Beiträge
    9.886
    Blog-Einträge
    29
    Hallo,

    schau mal hier:
    Code csharp:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Security.Principal;
    using System.Runtime.InteropServices;
    using System.Security.Permissions;
     
    namespace De.Tutorials.Training.Core
    {
        class Program
        {
     
            [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);
            [DllImport("kernel32.dll", CharSet = CharSet.Auto)]
            public extern static bool CloseHandle(IntPtr handle);
     
            static void Main(string[] args)
            {
                WindowsIdentity id = System.Security.Principal.WindowsIdentity.GetCurrent();
                Console.WriteLine("CurrentUser: " + id.Name);
     
     
                string username = "foo";
                string domain = "box";
                string password = "foofoofoo";
     
                IntPtr fooUserToken = IntPtr.Zero;
     
                bool logonSuccessfull = LogonUser(
                                            username,
                                            domain,
                                            password,
                                            3, //LOGON32_LOGON_NETWORK
                                            0, //LOGON32_PROVIDER_DEFAULT
                                        ref fooUserToken);
     
                Console.WriteLine(logonSuccessfull);
     
                using (WindowsIdentity identity = new WindowsIdentity(fooUserToken))
                {
                    CloseHandle(fooUserToken);
     
                    Console.WriteLine("New Identity: " + identity.Name);
     
                    using (WindowsImpersonationContext impersonation = identity.Impersonate())
                    {
     
                        id = System.Security.Principal.WindowsIdentity.GetCurrent();
                        Console.WriteLine("CurrentUser: " + id.Name);
                        Console.WriteLine("Leaving impersonated user... on dispose");
                    }
     
                    id = System.Security.Principal.WindowsIdentity.GetCurrent();
                    Console.WriteLine("CurrentUser: " + id.Name);
                }
            }
        }
    }

    Ausgabe:
    Code :
    1
    2
    3
    4
    5
    6
    7
    
    CurrentUser: box\tom
    True
    New Identity: box\foo
    CurrentUser: box\foo
    Leaving impersonated user... on dispose
    CurrentUser: box\tom
    Drücken Sie eine beliebige Taste . . .

    Gruß Tom
    RudolfG bedankt sich. 
    Java rocks!
    How to become a good Java Programmer?
    Does IT in Java and .Net
    The only valid measurement of code quality: WTFs / minute
    Blog
    Xing
    Twitter

Ähnliche Themen

  1. HttpClient:Automatische Anmeldung
    Von HichamId im Forum Java
    Antworten: 3
    Letzter Beitrag: 01.09.08, 10:39
  2. Antworten: 0
    Letzter Beitrag: 29.11.07, 08:16
  3. Automatische Interneteinwahl vor Anmeldung Win2k
    Von ZidaneIX im Forum Microsoft Windows
    Antworten: 1
    Letzter Beitrag: 07.09.04, 07:21
  4. Automatische Anmeldung unter SuSE 8.2
    Von alexdoehla im Forum Linux & Unix
    Antworten: 4
    Letzter Beitrag: 23.02.04, 12:07
  5. Anmeldung mit VB
    Von ShinmA im Forum Visual Basic 6.0
    Antworten: 5
    Letzter Beitrag: 06.08.03, 14:33