English
Regulars table & Café

GetTokenInformation.

 


Description:

GetTokenInformation reads from the Access Token one eingelogten Users Information from (u.a. over this User). These function there only NT-based Windowssystemen.




Deklaration:

DEF @GetTokenInformation(5) !advapi32,GetTokenInformation




Parameter:

1.Parameter: lever the Access Token. the lever must TOKEN_QUERY ($8) Zugriffrechte having. should The fountain the Tokens determined go, is too TOKEN_QUERY_SOURCE Access necessary ($10).
2.Parameter: One TOKEN_INFORMATION_CLASS Flag, the angibt which Information read go should. =>
-$1 = determined whom Usernamen (whom SID the Users) from the Token (TokenUser)
-$2 = determined The groups (SID’s the groups), in them the User Member is (TokenGroups).
-$3 = determined The Privilegien (LUID’s) and its attributes, over The the User verfügt (TokenPrivileges).
-$4 = determined whom User or The group (SID), The at create Objects as proprietor registered becomes (TokenOwner).
-$5 = determined The Primäre group (SID) the Users (TokenPrimaryGroup).
-$6 = determined whom DACL, the at produce Objects by the User as standard is used (TokenDefaultDacl).
-$7 = determined The fountain one Token (TokenSource).
-$8 = determined whom type the Token (TokenType).
-$9 = determined whom Security Impersonation Level one Impersonation Token (TokenImpersonationLevel).).
-$10 = determined data over The ID the Token (TokenId), The ID the Session (AuthenticationId), whom type the Token, whom Impersonation Level one Imoersonation Token (ImpersonationLevel), whom verwendeten Speicherplatz (DynamicCharged), The Number of groups in the Token (GroupCount), The Number of Privilegien in the Token (PrivilegeCount) and over The latest Veränderung the Token (ModifiedId).
3.Parameter: an Memory-Variable, The The angefragten data aufnimmt:
If Parameter 2 $1 is, is this Parameter a 8 byte large TOKEN_USER structure.=>
-Bytes 0-3 = address the SID the Users, whom the Token personifiziert.
-Bytes 4-7 = ? Happen? for attributes the SID’s the Users, to Time not used.
If Parameter 2 $2 is, is this Parameter a TOKEN_GROUPS structure, from one aray from SID_AND_ATTRIBUTES Structures and the Number of groups exists:
-byte 0-3 = Number of groups in the aray.
-byte 4-7 = address the SID’s the 1.group.
-byte 8-11 = ? Happen? for attributes the SID’s the 1. group:
$1 = group can't deleted go (SE_GROUP_MANDATORY).
$2 = group is standardmäßig activate (SE_GROUP_ENABLED_BY_DEFAULT).
$4 = group is active (SE_GROUP_ENABLED).
$8 = group can one proprietor Objects his (SE_GROUP_OWNER).
$C0000000 = group is a Logonname (SE_GROUP_LOGON_ID).
-byte 12-15 = address the SID’s the 2.group.
-byte 16-19 = ? Happen? for attributes the SID’s the 2. group
-....
If Parameter 2 $3 is, is this Parameter a 4 byte large TOKEN_Owner structure.=>
-byte 0-3 = Number of Privilegien in the aray.
-byte 4-11 = LUID the 1.Privilegs.
-byte 12-15 = ? Happen? for attributes the 1.Privilegs:
$0 = privilege is deaktiviert.
$1 = privilege is standardmäßig activate.
$2 = privilege is activate.
$80000000 = privilege watts to that grabbed using.
-byte 16-23 = LUID the 2.Privilegs.
-byte 24-27 = ? Happen? for attributes the 2.Privilegs:
-....
If Parameter 2 $4 is, is this Parameter a 4 byte large TOKEN_OWNER structure.=>
-byte 0-3 = address the SID’s the Users or the group, The at create Objects as proprietor registered becomes.
If Parameter 2 $5 is, is this Parameter a 4 byte large TOKEN_PRIMARY_GROUP structure.=>
-byte 0-3 = address the SID’s the Primären group the Users.
If Parameter 2 $6 is, is this Parameter a 4 byte large TOKEN_DEFAULT_DACL structure.=>
-byte 0-3 = address the DACL’s, the at produce Objects by the User as standard is used.
If Parameter 2 $7 is, is this Parameter a 16 byte large TOKEN_SOURCE structure.=>
-byte 0-7 = 8 byte great Charakterstring, the The fountain the Token angibt.
-byte 8-15 = LUID the fountain the Token.
If Parameter 2 $8 is, is this Parameter a 4 byte large TOKEN_TYPE structure, its LongInt worth The manner the Token angibt.=>
-$1 = Primärer Token (TokenPrimary).
-$2 = Impersonation Token (TokenImpersonation)
If Parameter 2 $9 is, is this Parameter a 4 byte large SECURITY_IMPERSONATION_LEVEL structure, its LongInt worth whom Impersonation Level the Token angibt, if this one Impersonation Token is. =>
-$1 = SecurityAnonymous
-$2 = SecurityIdentification
-$3 = SecurityImpersonation
-$4 = SecurityDelegation
If Parameter 2 $10 is, is this Parameter a 52 byte large TOKEN_STATISTICS structure.=>
-byte 0-7 = LUID, the deie ID the Token repräsentiert.
-byte 8-15 = LUID, the The Session repräsentiert.
-byte 16-19 = Ablaufzeit the Token. Currently not supported.
-byte 20-23 = Flag for manner the Token.
$1 = Primärer Token (TokenPrimary).
$2 = Impersonation Token (TokenImpersonation)
-byte 24-27 = Impersonation Level the Token, if this one Impersonation Token is.
$1 = SecurityAnonymous
$2 = SecurityIdentification
$3 = SecurityImpersonation
$4 = SecurityDelegation
-byte 28-31 = The Number of Bytes, The to that Save Primärer group and DACL reserved are.
-byte 32-35 = The Number of Bytes, The in the reserved Speicherbereich of Primärer group and DACL yet spare are.
-byte 36-39 = Number of groups in the Token as LongInt.
-byte 40-43 = Number of Privilegien in the Token as LongInt.
-byte 44-51 = LUID the itself each time changes, if itself something in the Token changed.
4.Parameter: the stature in Bytes the Bereichs from Parameter 3.
5.Parameter: 4 byte Memory-Variable, The The Number of for Parameter 3 required Bytes aufnimmt. is these number larger as Parameter 4, go no data in Parameter 3 transfer and the function proposes fehl.



Return Value:

1 with success, 0 with Error.


Examples:

CompileMarkSeparation
DEF @OpenProcessToken(3) !"advapi32","OpenProcessToken"
DEF @GetTokenInformation(5) !"advapi32","GetTokenInformation"
DEF @GetCurrentProcess(0) !"kernel32","GetCurrentProcess" Ermittel das Handle des aktiven Prozesses.
DEF @CloseHandle(1) !"kernel32","CloseHandle" Schließt ein Handle (Programm).
DEF @GetLastError(0) !"kernel32","GetLastError" Liefert letzten API Fehler.
DEF @LookupAccountSid(7) !"ADVAPI32","LookupAccountSidA"
DEF @IsValidSid(1) !"ADVAPI32","IsValidSid"
DEF @LookupPrivilegeName(4) !"advapi32","LookupPrivilegeNameA" Ermittelt aus dem Luid eines Privilegs dessen Namen.
DEF @CopyMemory(3) !"kernel32","RtlMoveMemory"
DEF @GetLengthSid(1) !"advapi32","GetLengthSid"
Declare Token#,Token&,PSID#,Erforderlich#,Zähler2&,SIDFlags&
Declare Erforderlich&,Fehler&,PSID&,System$,Zähler&,Attribute$
Declare ACCOUNT_NAME#,SIZE_ACCOUNT#,Domain#,SIZE_DOMAIN#,SID_NAME_USE#
Declare User$,PRIVLUID#,SID_STRUC#
Windowstyle 31
WindowTitle "Informationen im aktuellen Token"
Window 0,0-%MAXX,%MAXY-40
DIM Token#,4
ADDSTRING "Letzter API Fehler="+@STR$(Fehler&)
LET Fehler&=@OpenProcessToken(@GetCurrentProcess(),$8,Token#)
ADDSTRING "Fehlercode OpenProcessToken="+@STR$(Fehler&)
Let Fehler&=@GetLastError()
ADDSTRING "Letzter API Fehler="+@STR$(Fehler&)
Let Token&=@LONG(Token#,0)
Dispose Token#
ADDSTRING "Handle des Token="+@STR$(Token&)
DIM Erforderlich#,4
DIM PSID#,1
Clear PSID#
Clear Erforderlich#
Let Fehler&=@GetTokenInformation(Token&,1,PSID#,1,Erforderlich#)
ADDSTRING "Fehlercode GetTokenInformation="+@STR$(Fehler&)
Let Fehler&=@GetLastError()
ADDSTRING "Letzter API Fehler="+@STR$(Fehler&)
Addstring "Erforderliche Bufferlänge="+@STR$(@LONG(Erforderlich#,0))
Let Erforderlich&=@LONG(Erforderlich#,0)
Dispose PSID#
DIM PSID#,Erforderlich&
Clear PSID#
Clear Erforderlich#
Let Fehler&=@GetTokenInformation(Token&,1,PSID#,Erforderlich&,Erforderlich#)
ADDSTRING "Fehlercode GetTokenInformation="+@STR$(Fehler&)
Let Fehler&=@GetLastError()
ADDSTRING "Letzter API Fehler="+@STR$(Fehler&)
DIM ACCOUNT_NAME#,256
DIM SIZE_ACCOUNT#,4
DIM Domain#,256
DIM SIZE_DOMAIN#,4
DIM SID_NAME_USE#,4
Clear SID_NAME_USE#
Clear ACCOUNT_NAME#
Clear Domain#
Long SIZE_ACCOUNT#,0=255
LONG SIZE_DOMAIN#,0=255
LET System$=""
LET FEHLER&=@LookupAccountSid(@ADDR(System$),@LONG(PSID#,0),ACCOUNT_NAME#,SIZE_ACCOUNT#,Domain#,SIZE_DOMAIN#,SID_NAME_USE#)
ADDSTRING "Fehlercode LookupAccountSid="+@STR$(Fehler&)
Let Fehler&=@GetLastError()
ADDSTRING "Letzter API Fehler="+@STR$(Fehler&)
ADDSTRING "Eigentümer des Token="+@String$(ACCOUNT_NAME#,0)
Print "Eigentümer des Token="+@String$(ACCOUNT_NAME#,0)
LET USER$=@String$(ACCOUNT_NAME#,0)
Dispose PSID#
DIM PSID#,1
Clear PSID#
Clear Erforderlich#
Let Fehler&=@GetTokenInformation(Token&,1,PSID#,1,Erforderlich#)
ADDSTRING "Fehlercode GetTokenInformation="+@STR$(Fehler&)
Let Fehler&=@GetLastError()
ADDSTRING "Letzter API Fehler="+@STR$(Fehler&)
Addstring "Erforderliche Bufferlänge="+@STR$(@LONG(Erforderlich#,0))
Let Erforderlich&=@LONG(Erforderlich#,0)
Dispose PSID#
DIM PSID#,Erforderlich&
Clear PSID#
Clear Erforderlich#
Let Fehler&=@GetTokenInformation(Token&,1,PSID#,Erforderlich&,Erforderlich#)
ADDSTRING "Fehlercode GetTokenInformation="+@STR$(Fehler&)
Let Fehler&=@GetLastError()
ADDSTRING "Letzter API Fehler="+@STR$(Fehler&)
Clear SID_NAME_USE#
Clear ACCOUNT_NAME#
Clear Domain#
Long SIZE_ACCOUNT#,0=255
LONG SIZE_DOMAIN#,0=255
LET System$=""
LET FEHLER&=@LookupAccountSid(@ADDR(System$),@LONG(PSID#,0),ACCOUNT_NAME#,SIZE_ACCOUNT#,Domain#,SIZE_DOMAIN#,SID_NAME_USE#)
ADDSTRING "Fehlercode LookupAccountSid="+@STR$(Fehler&)
Let Fehler&=@GetLastError()
ADDSTRING "Letzter API Fehler="+@STR$(Fehler&)
ADDSTRING "Durch den Token personifizierter User="+@String$(ACCOUNT_NAME#,0)
Print "Durch den Token personifizierter User="+@String$(ACCOUNT_NAME#,0)
Dispose PSID#
DIM PSID#,1
Clear PSID#
Clear Erforderlich#
Let Fehler&=@GetTokenInformation(Token&,8,PSID#,1,Erforderlich#)
ADDSTRING "Fehlercode GetTokenInformation="+@STR$(Fehler&)
Let Fehler&=@GetLastError()
ADDSTRING "Letzter API Fehler="+@STR$(Fehler&)
Addstring "Erforderliche Bufferlänge="+@STR$(@LONG(Erforderlich#,0))
Let Erforderlich&=@LONG(Erforderlich#,0)
Dispose PSID#
DIM PSID#,Erforderlich&
Clear PSID#
Clear Erforderlich#
Let Fehler&=@GetTokenInformation(Token&,8,PSID#,Erforderlich&,Erforderlich#)
ADDSTRING "Fehlercode GetTokenInformation="+@STR$(Fehler&)
Let Fehler&=@GetLastError()
ADDSTRING "Letzter API Fehler="+@STR$(Fehler&)

IF @Long(PSID#,0)=$1

    ADDSTRING "Art des Token=Primärer Token"

elseif @Long(PSID#,0)=$2

    ADDSTRING "Art des Token=Impersonation Token"

endif

Dispose PSID#
DIM PSID#,1
Clear PSID#
Clear Erforderlich#
Let Fehler&=@GetTokenInformation(Token&,4,PSID#,1,Erforderlich#)
ADDSTRING "Fehlercode GetTokenInformation="+@STR$(Fehler&)
Let Fehler&=@GetLastError()
ADDSTRING "Letzter API Fehler="+@STR$(Fehler&)
Addstring "Erforderliche Bufferlänge="+@STR$(@LONG(Erforderlich#,0))
Let Erforderlich&=@LONG(Erforderlich#,0)
Dispose PSID#
DIM PSID#,Erforderlich&
Clear PSID#
Clear Erforderlich#
Let Fehler&=@GetTokenInformation(Token&,4,PSID#,Erforderlich&,Erforderlich#)
ADDSTRING "Fehlercode GetTokenInformation="+@STR$(Fehler&)
Let Fehler&=@GetLastError()
ADDSTRING "Letzter API Fehler="+@STR$(Fehler&)
Clear SID_NAME_USE#
Clear ACCOUNT_NAME#
Clear Domain#
Long SIZE_ACCOUNT#,0=255
LONG SIZE_DOMAIN#,0=255
LET System$=""
LET FEHLER&=@LookupAccountSid(@ADDR(System$),@LONG(PSID#,0),ACCOUNT_NAME#,SIZE_ACCOUNT#,Domain#,SIZE_DOMAIN#,SID_NAME_USE#)
ADDSTRING "Fehlercode LookupAccountSid="+@STR$(Fehler&)
Let Fehler&=@GetLastError()
ADDSTRING "Letzter API Fehler="+@STR$(Fehler&)
ADDSTRING "Beim Erstellen von Objekten als Besitzer eingetragen="+@String$(ACCOUNT_NAME#,0)
Print "Beim Erstellen von Objekten als Besitzer eingetragen="+@String$(ACCOUNT_NAME#,0)
Dispose PSID#
DIM PSID#,1
Clear PSID#
Clear Erforderlich#
Let Fehler&=@GetTokenInformation(Token&,3,PSID#,1,Erforderlich#)
ADDSTRING "Fehlercode GetTokenInformation="+@STR$(Fehler&)
Let Fehler&=@GetLastError()
ADDSTRING "Letzter API Fehler="+@STR$(Fehler&)
Addstring "Erforderliche Bufferlänge="+@STR$(@LONG(Erforderlich#,0))
Let Erforderlich&=@LONG(Erforderlich#,0)
Dispose PSID#
DIM PSID#,Erforderlich&
Clear PSID#
Clear Erforderlich#
Let Fehler&=@GetTokenInformation(Token&,3,PSID#,Erforderlich&,Erforderlich#)
ADDSTRING "Fehlercode GetTokenInformation="+@STR$(Fehler&)
Let Fehler&=@GetLastError()
ADDSTRING "Letzter API Fehler="+@STR$(Fehler&)
Clear SID_NAME_USE#
Clear ACCOUNT_NAME#
Clear Domain#
Long SIZE_ACCOUNT#,0=255
LONG SIZE_DOMAIN#,0=255
LET System$=""
LET FEHLER&=@LookupAccountSid(@ADDR(System$),PSID#,ACCOUNT_NAME#,SIZE_ACCOUNT#,Domain#,SIZE_DOMAIN#,SID_NAME_USE#)
ADDSTRING "Fehlercode LookupAccountSid="+@STR$(Fehler&)
Let Fehler&=@GetLastError()
ADDSTRING "Letzter API Fehler="+@STR$(Fehler&)
ADDSTRING "Anzahl der Privilegien für "+User$+"="+@STR$(@LONG(PSID#,0))
LET Zähler&=0
Long SIZE_ACCOUNT#,0=255
lET System$=""
DIM PRIVLUID#,8

While @LONG(PSID#,0)>Zähler&

    Long SIZE_ACCOUNT#,0=255
    Clear ACCOUNT_NAME#,PRIVLUID#
    LET PSID&=PSID#
    Let Attribute$="("
    @CopyMemory(PRIVLUID#,PSID&+Zähler&*12+4,8)
    LET Fehler&=@LookupPrivilegeName(@ADDR(System$),PRIVLUID#,ACCOUNT_NAME#,SIZE_ACCOUNT#)
    ADDSTRING "Fehlercode LookupPrivilegeName="+@STR$(Fehler&)
    Let Fehler&=@GetLastError()
    ADDSTRING "Letzter API Fehler="+@STR$(Fehler&)
    ADDSTRING "Flags der Attribute des "+@STR$(@INT(Zähler&+1))+".Privilegs=$"+@Hex$(@LONG(PSID#,Zähler&*12+12))

    IF @OR(@LONG(PSID#,Zähler&*12+12),$1)=@LONG(PSID#,Zähler&*12+12)

        LET Attribute$=Attribute$+"sofort aktiv,"

    endif

    IF @OR(@LONG(PSID#,Zähler&*12+12),$2)=@LONG(PSID#,Zähler&*12+12)

        LET Attribute$=Attribute$+"aktiv,"

    endif

    IF @OR(@LONG(PSID#,Zähler&*12+12),$80000000)=@LONG(PSID#,Zähler&*12+12)

        LET Attribute$=Attribute$+"zum Zugriff benutzt,"

    endif

    IF @LONG(PSID#,Zähler&*12+12)=$0

        LET Attribute$=Attribute$+"deaktiviert,"

    endif

    IF @LEN(Attribute$)>1

        LET ATTRIBUTE$=@LEFT$(Attribute$,@LEN(Attribute$)-1)+")"

    Else

        LET ATTRIBUTE$=Attribute$+")"

    endif

    ADDSTRING User$+"s "+@STR$(@INT(Zähler&+1))+".Privileg="+@String$(ACCOUNT_NAME#,0)+" "+Attribute$
    PRINT User$+"s "+@STR$(@INT(Zähler&+1))+".Privileg="+@String$(ACCOUNT_NAME#,0)+" "+Attribute$
    Let Zähler&=Zähler&+1

wend

Dispose PRIVLUID#
Clear PSID#
Clear Erforderlich#
Let Fehler&=@GetTokenInformation(Token&,2,PSID#,1,Erforderlich#)
ADDSTRING "Fehlercode GetTokenInformation="+@STR$(Fehler&)
Let Fehler&=@GetLastError()
ADDSTRING "Letzter API Fehler="+@STR$(Fehler&)
Addstring "Erforderliche Bufferlänge="+@STR$(@LONG(Erforderlich#,0))
Let Erforderlich&=@LONG(Erforderlich#,0)
Dispose PSID#
DIM PSID#,Erforderlich&
Clear PSID#
Clear Erforderlich#
Let Fehler&=@GetTokenInformation(Token&,2,PSID#,Erforderlich&,Erforderlich#)
ADDSTRING "Fehlercode GetTokenInformation="+@STR$(Fehler&)
Let Fehler&=@GetLastError()
ADDSTRING "Letzter API Fehler="+@STR$(Fehler&)
ADDSTRING "Anzahl der Gruppen im Token="+@STR$(@LONG(PSID#,0))
LET Zähler&=0
LET Zähler2&=1

While @LONG(PSID#,0)>Zähler&

    Clear SID_NAME_USE#
    Clear ACCOUNT_NAME#
    Clear Domain#
    Long SIZE_ACCOUNT#,0=255
    LONG SIZE_DOMAIN#,0=255
    LET System$=""
    ADDSTRING "Länge des SIDs der "+@STR$(Zähler&)+".Gruppe="+@STR$(@GetLengthSid(@LONG(PSID#,Zähler&*8+4)))
    DIM SID_STRUC#,@GetLengthSid(@LONG(PSID#,Zähler&*8+4))
    @CopyMemory(SID_STRUC#,@LONG(PSID#,Zähler&*8+4),@GetLengthSid(@LONG(PSID#,Zähler&*8+4)))
    LET FEHLER&=@IsValidSid(SID_STRUC#)
    ADDSTRING "Fehlercode IsValidSid="+@STR$(Fehler&)
    LET FEHLER&=@LookupAccountSid(@ADDR(System$),SID_STRUC#,ACCOUNT_NAME#,SIZE_ACCOUNT#,Domain#,SIZE_DOMAIN#,SID_NAME_USE#)
    Dispose SID_STRUC#
    ADDSTRING "Fehlercode LookupAccountSid="+@STR$(Fehler&)
    Let Fehler&=@GetLastError()
    ADDSTRING "Letzter API Fehler="+@STR$(Fehler&)
    ADDSTRING @Str$(Zähler2&)+".Gruppe im Token="+@String$(ACCOUNT_NAME#,0)
    ADDSTRING "Flags der Attribute der "+@Str$(Zähler2&)+".Gruppe im Token=$"+@HEX$(@LONG(PSID#,Zähler&*8+8))
    LET Attribute$="("
    LET SIDFlags&=@LONG(PSID#,Zähler&*8+8)

    IF @OR(@LONG(PSID#,Zähler&*8+8),$1)=@LONG(PSID#,Zähler&*8+8)

        LET Attribute$=Attribute$+"nicht löschbar,"
        LET SIDFlags&=SIDFlags&-$1

    endif

    IF @OR(@LONG(PSID#,Zähler&*8+8),$2)=@LONG(PSID#,Zähler&*8+8)

        LET Attribute$=Attribute$+"standardmäßig aktiviert,"
        LET SIDFlags&=SIDFlags&-$2

    endif

    IF @OR(@LONG(PSID#,Zähler&*8+8),$4)=@LONG(PSID#,Zähler&*8+8)

        LET Attribute$=Attribute$+"aktiviert,"
        LET SIDFlags&=SIDFlags&-$4

    endif

    IF @OR(@LONG(PSID#,Zähler&*8+8),$8)=@LONG(PSID#,Zähler&*8+8)

        LET Attribute$=Attribute$+"kann Eigentümer sein,"
        LET SIDFlags&=SIDFlags&-$8

    endif

    IF @OR(@LONG(PSID#,Zähler&*8+8),$C0000000)=@LONG(PSID#,Zähler&*8+8)

        LET Attribute$=Attribute$+"Logon ID,"
        LET SIDFlags&=SIDFlags&-$C0000000

    endif

    IF SIDFlags&>0

        ADDSTRING "Nicht berechnete Attribute=$"+@HEX$(SIDFlags&)

    endif

    IF @LEN(Attribute$)>1

        LET ATTRIBUTE$=@LEFT$(Attribute$,@LEN(Attribute$)-1)+")"

    Else

        LET ATTRIBUTE$=Attribute$+")"

    endif

    Addstring "Attribute der "+@Str$(Zähler2&)+".Gruppe im Token="+Attribute$
    Print @Str$(Zähler2&)+".Gruppe im Token="+@String$(ACCOUNT_NAME#,0)+" "+Attribute$
    Let Zähler2&=Zähler2&+1
    Let Fehler&=@GetLastError()
    ADDSTRING "Letzter API Fehler="+@STR$(Fehler&)
    Let Zähler&=Zähler&+1

Wend

Dispose ACCOUNT_NAME#
Dispose SIZE_ACCOUNT#
Dispose Domain#
Dispose SIZE_DOMAIN#
Dispose SID_NAME_USE#
Dispose PSID#
Dispose Erforderlich#
LET FEHLER&=@CloseHandle(Token&)
ADDSTRING "Fehlercode Clo
le="+@STR$(Fehler&) @EDITBOX("Rückgaben",1)

[keywords:787e66d1bf]
Security Token Access User data Information user groups Primäre group proprietor Owner privilege Privilegien manner Information group Login eingelogt eingelogter
[/keywords:787e66d1bf]
 
05/14/05  
 



Answer


Topictitle, max. 100 characters.
 

Systemprofile:

no Systemprofil laid out. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

Please register circa a Posting To verfassen.
 

Topic-Options

1.074 Views

Untitledvor 0 min.

Themeninformationen

this Topic has 1 subscriber:

unbekannt (1x)


Admins  |  AGB  |  Applications  |  Authors  |  Chat  |  Privacy Policy  |  Download  |  Entrance  |  Help  |  Merchantportal  |  Imprint  |  Mart  |  Interfaces  |  SDK  |  Services  |  Games  |  Search  |  Support

One proposition all XProfan, The there's!


My XProfan
Private Messages
Own Storage Forum
Topics-Remember-List
Own Posts
Own Topics
Clipboard
Log off
 Deutsch English Français Español Italia
Translations

Privacy Policy


we use Cookies only as Session-Cookies because of the technical necessity and with us there no Cookies of Drittanbietern.

If you here on our Website click or navigate, stimmst You ours registration of Information in our Cookies on XProfan.Net To.

further Information To our Cookies and moreover, How You The control above keep, find You in ours nachfolgenden Datenschutzerklärung.


all rightDatenschutzerklärung
i want none Cookie