Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Byta användare

Postades av 2003-04-09 14:35:44 - Johan Bovin, i forum c# (c-sharp), Tråden har 2 Kommentarer och lästs av 832 personer

Hej
Har tittat lite på nätet och hittat nedanstående kod. Dock får jag det aldrig att fungera. LogonUser returnerar alltid 0...
<code>
public class UserChanger
{
[DllImport("advapi32",CharSet=CharSet.Auto, SetLastError=true )]
public static extern bool LogonUser(String lpszUsername, String lpszDomain, String lpszPassword,
int dwLogonType, int dwLogonProvider, ref IntPtr phToken);

[DllImport("Kernel32")]
public static extern int GetLastError();

public static void Run(string un, string computer, string pw)
{
// The Windows NT user token.
IntPtr token1=IntPtr.Zero;

// Get the user token for the specified user, machine, and password using the unmanaged LogonUser method.

bool loggedOn = LogonUser(
// User name.
un,

// Computer name.
computer,

// Password.
pw,

// Logon type = LOGON32_LOGON_NETWORK_CLEARTEXT.
3,

// Logon provider = LOGON32_PROVIDER_DEFAULT.
0,

// The user token for the specified user is returned here.
ref token1);

Console.WriteLine("LogonUser called");

// Call GetLastError to try to determine why logon failed if it did not succeed.
if(loggedOn)
{




Console.WriteLine("LogonUser Success? " + loggedOn);
Console.WriteLine("NT Token Value: " + token1);

//Starting impersonation here:
Console.WriteLine("\n\nBefore impersonation:\n");
WindowsIdentity mWI1 = WindowsIdentity.GetCurrent();
Console.WriteLine(mWI1.Name);
Console.WriteLine(mWI1.Token);

IntPtr token2 = new IntPtr(token1.ToInt32());

Console.WriteLine("\n\nNew identity created:\n");
WindowsIdentity mWI2 = new WindowsIdentity(token2);
Console.WriteLine(mWI2.Name);
Console.WriteLine(mWI2.Token);

// Impersonate the user.
WindowsImpersonationContext mWIC = mWI2.Impersonate();

Console.WriteLine("\n\nAfter impersonation:\n");
WindowsIdentity mWI3 = WindowsIdentity.GetCurrent();
Console.WriteLine(mWI3.Name);
Console.WriteLine(mWI3.Token);

// Revert to previous identity.
mWIC.Undo();

Console.WriteLine("\n\nAfter impersonation is reverted:\n");
WindowsIdentity mWI4 = WindowsIdentity.GetCurrent();
Console.WriteLine(mWI4.Name);
Console.WriteLine(mWI4.Token);
}
else
{
int ret = GetLastError();

switch (ret)
{
case 1326:
Console.WriteLine("Unknown User/Password");
break;
case 1327:
Console.WriteLine("Account disabled");
break;
case 1331:
Console.WriteLine("Restricted by policies");
break;
default:
Console.WriteLine(ret.ToString());
break;
}
}
}
}
</code>
kör på XP men det borde väl inte spela nån roll? LastError är alltid 126..


Svara

Sv: Byta anv&#228;ndare

Postades av 2003-04-09 23:19:58 - Mattias Lindberg

Jag testade exact din kod och det funkade för mig, både mot min domän och mot lokalt konto på min maskin. När jag validerade mot lokal maskin skrev jag namnet på maskinen, inte . eller localhost eller nåt sådant.

Om jag däremot skrev ett felaktigt användarnamn eller lösenord så fick jag alltid 126, inte 1326 som switch-stmt antyder.

Är du säker på att du anger rätt info till ditt anrop? Prova att skapa ett nytt konto lokalt på din maskin och använd det.

Ett alternativ är att du inte är behörig att anropa detta API. Är du t.ex. medlem i admingruppen på den lokala maskinen?

/Mattias


Svara

Sv: Byta anv&amp;#228;ndare

Postades av 2003-04-10 08:17:09 - Johan Bovin

alltså, koden ovan fungerar utmärkt om man använder den på rätt sätt... t.ex. skickar in rätt parametrar. Hade lyckats får lösenordet på datornamnet och tvärtom... tacka f*n för att han inte vill logga in mig...


Svara

Nyligen

  • 08:28 Butiksskyltar: Hur upplever utbude
  • 22:31 Slappna av
  • 19:55 kick-off med fokus på hälsa?
  • 19:53 kick-off med fokus på hälsa?
  • 16:24 Föreslå en skönhetsklinik online
  • 16:23 Föreslå en skönhetsklinik online
  • 18:42 Hvor finder man håndlavede lamper
  • 18:41 Hvor finder man håndlavede lamper

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 570 840
27 960
271 761
442
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies