HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Felhasználó létrehozása és törlése API-val


Példaprogram letöltése

12531 bájt

Cikkünkben megismerkedhetünk azokkal az API függvényekkel, melyekkel a számítógép felhasználóit, valamint a felhasználókhoz kapcsolódó műveleteket érhetjük el. Bemutatjuk, hogyan kérdezhetjük le a hálózat egy adott számítógépének felhasználólistáját, valamint hogy miként adhatunk új felhasználót a rendszerhez, és hogyan törölhetünk egy választott felhasználót a rendszerből.

A példaprogramunkban egy ComboBox-ban jelenítjük meg a számítógép felhasználóinak listáját, és egy szövegmezőben a felhasználó típusát, mely háromféle lehet: vendég (0), általános felhasználó (1) és adminisztrátor (2).
A felhasználók közül a kiválasztott törölhető a FELHASZNÁLÓ TÖRLÉSE feliratú gombbal. Az ÚJ FELHASZNÁLÓ feliratúval pedig egy új felhasználó vehető fel a listába. Utóbbi művelet esetén egy űrlap jelenik meg, melyen megadható a felhasználó jelszava és egy megjegyzés is. A felhasználónév megadása kötelező.
Az API függvények elérésének egyszerűsítése végett ezek meghívása saját metódusokon keresztül történik, melyeket a NetworkClass osztályban deklaráltunk.
A nem-menedzselt metódusok két nem-menedzselt struktúrát használnak, melyekhez létrehoztuk a menedzselt megfelelőket. Az első a USER_UNIT_0, mely a felhasználónevek kigyűjtését teszi lehetővé.
[StructLayout(LayoutKind.Sequential, CharSet=CharSet.Unicode)]
public struct USER_INFO_0
{
  public String Username;
}
A USER_UNIT_1 struktúra segítségével kérdezzük le a felhasználói információkat, melyek közül a felhasználótípust jelenítjük meg a Form-on. A struktúrát feltöltjük adatokkal új felhasználó hozzáadásakor.
[StructLayout(LayoutKind.Sequential, CharSet=CharSet.Unicode)]
public struct USER_INFO_1
{
  public string usri1_name; 
  public string usri1_password; 
  public int usri1_priv; 
  public string comment; 
  ...
}
A felhasználók neveit a NetUserEnum függvénnyel kérdezhetjük le.
[DllImport("Netapi32.dll")]
public extern static int NetUserEnum(string servername, int level, int filter, out IntPtr bufptr, int prefmaxlen, out int entriesread, out int totalentries, out int resume_handle);
A NetworkClass osztályban a GetUserNames metódusba ágyaztuk a függvény meghívását.
A felhasználói adatokat a NetUserGetInfo függvénnyel kérdezzük le, meghívását a GetUserData metódusba ágyazva.
[DllImport("Netapi32.dll")]
public extern static int NetUserGetInfo([MarshalAs(UnmanagedType.LPWStr)] string servername,[MarshalAs(UnmanagedType.LPWStr)] string username,int level,out IntPtr bufptr);
Amennyiben felhasználót kívánunk törölni, akkor a műveletet a NetUserDel függvény végzi el.
[DllImport("Netapi32.dll")]
public extern static int NetUserDel([MarshalAs(UnmanagedType.LPWStr)] string servername, [MarshalAs(UnmanagedType.LPWStr)] string username);
A metódus, melyben meghívjuk a függvényt, a következőképpen fest:
public bool DeleteUser(string user)
{
  bool result = false;
  if (NetUserDel(null,user) == 0)
  {
    result = true;
  }
  return result;
}
Látható, hogy a első paraméterében kell megadnunk a számítógép nevét, melyen a felhasználó található. Jelen példában ez NULL, hiszen a PC-nk felhasználójáról van szó. A második paraméterben adjuk meg a felhasználó nevét. A függvény nullával tér vissza sikeres műveletvégzés esetén.
Új felhasználó felvételekor a NetUserAdd függvényt hívjuk meg. A függvény első paraméterben adjuk meg a számítógép nevét, melyen a felhasználói fiókot létre kívánjuk hozni. Jelen esetben NULL. Harmadik paramétere tartalmaz egy referenciát a felhasználói információkat tartalmazó struktúrára. A függvényhívás a NewUser metódusban történik meg, ahol a művelet a struktúra egy példányának létrehozásával indul.
public bool NewUser(string name, string password, string comment)
{
  bool result = false;
  USER_INFO_1 user = new USER_INFO_1();
A struktúra megfelelő mezőit feltöltjük a kapott paraméterekkel.
  user.usri1_name = name;
  user.usri1_password = password;
  user.comment = comment;
  user.usri1_priv = 1;
És a függvényhívás. A függvényhívás nullát ad eredményül, ha a művelet sikeres volt.
  if (NetUserAdd(null, 1, ref user, 0) == 0)
  {
    result = true;
  }
  ...
}

Könyv
Ez a cikk megtalálható ebben a könyvben: C# Software Offline 2003 évkönyv 306. oldal

Felhasználási feltételek
A Software Online szoftverfejlesztői magazin mindegyik cikke, minden megjelent képe, és egyéb publikált anyaga szerzői jog védelme alatt áll! Bármilyen formában történő másodlagos terjesztésük, közzétételük vagy felhasználásuk kizárólag a kiadó előzetes írásbeli engedélyével történhet!

Copyright © 1999-2012 Animare Software Kft. Minden jog fenntartva!
| Készült: Animare Stúdió | Adatvédelem | Kapcsolat |