Récupérer les informations de l'uilisateur

Codes specifiques à Linux
Guimauve
Messages : 1015
Inscription : mer. 11/févr./2004 0:32
Localisation : Québec, Canada

Récupérer les informations de l'uilisateur

Message par Guimauve »

Bonjour à tous,

un petit code intéressant pour récupérer les informations à propos de l'utilisateur sous Linux :

Code : Tout sélectionner

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; Project name : User Informations
; File Name : UserInformations.pb
; File version: 1.0.0
; Programmation : OK
; Programmed by : remi_meier
; Additional programming by : Guimauve
; Date : 04-02-2012
; Last Update : 04-02-2012
; PureBasic code : 4.61
; Plateform : Linux
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

Structure passwd 
	*pw_name.ascii;       /* username */
	*pw_passwd.ascii;     /* user password */
	pw_uid.l;        /* user ID */
	pw_gid.l;        /* group ID */
	*pw_gecos.ascii;      /* real name */
	*pw_dir.ascii;        /* home directory */
	*pw_shell.ascii;      /* shell program */
EndStructure

ImportC ""
	getuid.l()
	getpwuid.i(uid.l)
EndImport


Procedure.s UserName()
	
	Protected *login.passwd
	
	*login = getpwuid(getuid())
	
	If *login
		ProcedureReturn PeekS(*login\pw_name, -1, #PB_Ascii)
	EndIf
	
EndProcedure

Procedure.s RealUserName()
	
	Protected *login.passwd
	
	*login = getpwuid(getuid())
	
	If *login
		ProcedureReturn PeekS(*login\pw_gecos, -1, #PB_Ascii)
	EndIf
	
EndProcedure

Procedure UserID()
	
	Protected *login.passwd
	
	*login = getpwuid(getuid())
	
	If *login
		ProcedureReturn *login\pw_uid
	EndIf
	
EndProcedure

Procedure GroupID()
	
	Protected *login.passwd
	
	*login = getpwuid(getuid())
	
	If *login
		ProcedureReturn *login\pw_gid
	EndIf
	
EndProcedure

Procedure.s ShellProgram()
	
	Protected *login.passwd
	
	*login = getpwuid(getuid())
	
	If *login
		ProcedureReturn PeekS(*login\pw_shell, -1, #PB_Ascii)
	EndIf
	
EndProcedure

Procedure.s HomeDirectory() ; Useless, since we have GetHomeDirectory()
	
	Protected *login.passwd, HomeDirectory.s
	
	*login = getpwuid(getuid())
	
	If *login
		
		HomeDirectory = PeekS(*login\pw_dir, -1, #PB_Ascii)
		
		If Right(HomeDirectory, 1) <> "/"
			HomeDirectory + "/"
		EndIf
		
		ProcedureReturn HomeDirectory
		
	EndIf
	
EndProcedure

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
; <<<<< !!! WARNING - YOU ARE NOW IN A TESTING ZONE - WARNING !!! <<<<< 
; <<<<< !!! WARNING - THIS CODE SHOULD BE COMMENTED - WARNING !!! <<<<< 
; <<<<< !!! WARNING - BEFORE THE FINAL COMPILATION. - WARNING !!! <<<<< 
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 

Debug UserName()
Debug RealUserName()
Debug UserID()
Debug GroupID()
Debug ShellProgram()
Debug HomeDirectory()

; <<<<<<<<<<<<<<<<<<<<<<<
; <<<<< END OF FILE <<<<<
; <<<<<<<<<<<<<<<<<<<<<<<
Testé sous Linux Mint 12 x 64 + Gnome-Shell, Fonctionne à 100%

A+
Guimauve