Toon posts:

[VBS] Novell ingelogde gebruiker uitlezen

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hallo,

ik probeer in een VBS, de novell ingelogde gebruiker uit te lezen,
om daarna vanuit dat scriptje een browser te openen met de username als parameter.

Nu wil dat niet echte lukken,
de windows gebruiker kan ik wel uitlezen, maar helaas logt niet iedereen in, onder windows met dezelfde gebruikersnaam als in novell.

code:
1
2
3
Dim UserID
Set objNet = CreateObject("WScript.NetWork") 
UserID = objNet.UserName


code:
1
2
3
4
5
Dim strUser
strUser = Environ("NWUserName")
If Len(strUser) < 2 Then
     strUser = NetUserID()
End If

Dit werk niet !

Weet iemand misschien hoe het wel kan? Volgens mij is de NWUserName (van de environment variabele de Novell gegelogd gebruiker, maar die kan/wil die niet uitlezen.

Kan iemand mij hiermee helpen ?

[ Voor 4% gewijzigd door Verwijderd op 19-05-2003 14:12 ]


  • bigtree
  • Registratie: Oktober 2000
  • Laatst online: 07-07 11:51
Environ() is VB en werkt niet in VBscript. Zie deze pagina (Table C.2: Visual Basic Keywords Not in VBScript).

Lekker woordenboek, als je niet eens weet dat vandalen met een 'n' is.


Verwijderd

Topicstarter
Environ en Environ$ werken dus niet in VBScript,

is er misschien een andere manier om de "NWUSERNAME" uit de environment te lezen?

Verwijderd

Visual Basic:
1
2
3
4
Dim Shell
Dim CompName
Set Shell = WScript.CreateObject("WScript.Shell")
CompName = Shell.ExpandEnvironmentStrings("%COMPUTERNAME%")

Probeer dat eens maar dan met jouw variabele (eerst even uitzoeken of het echt nwusername is door in een command box set te typen en te kijken wat je daar ziet.

[ Voor 21% gewijzigd door Verwijderd op 13-05-2003 12:46 ]


  • Onno
  • Registratie: Juni 1999
  • Niet online
Met een van Novells ActiveX controls kan het sowieso wel (NWDir denk ik), maar dan moet je die wel kunnen installeren natuurlijk, wat niet in alle omgevingen kan. :)

Verwijderd

Topicstarter
Hmmm, zou die ingelogde gebruiker ook ergens in het register staan?

Verwijderd

Topicstarter
Nou ik heb deze key gevonden:
HKEY_LOCAL_MACHINE\SOFTWARE\Novell\NWGINA\Login Screen\DefaultNetWareUserName

  • DukeMan
  • Registratie: Mei 2000
  • Niet online
Hou wel in de gaten dat de gebruikersnaam die je uit het register of uit de environment variabele haalt niet perse de juiste naam bevatten... Dit is namelijk door de gebruiker gewoon aan te passen in het register of via de prompt. Iemand kan zich dus anders voor doen als ie daadwerkelijk is.
Er bestaan een aantal API's bij Novell die je gebruikersnaam (incl context) kunnen geven. Ik kan je zo even niet vertellen welke api's dat zijn (heb hier geen code voor me), maar kan morgen op mijn werk wel eens even kijken. Ik heb daar namelijk ook gebruik van gemaakt.

Edit:
Een nadeel, ik weet neit waar je de vbs in typed, maar je moet een aantal dim's doen naar de dll's van novell...

[ Voor 11% gewijzigd door DukeMan op 18-05-2003 14:07 ]


Verwijderd

Topicstarter
OK, ik heb het nu opgelost zoals het gaat bij NetWare

Ik roep gewoon het scriptje aan met %username% als parameter.

  • DukeMan
  • Registratie: Mei 2000
  • Niet online
Hierbij de beloofde code:

modDeclaration.Bas:
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
Public Declare Function NWCallsInit Lib "calwin32" (Reserved1 As Byte, _
           Reserved2 As Byte) As Long

Public Declare Function NWCCCloseConn Lib "clxwin32" (ByVal connHandle As Long) As Long

Public Declare Function NWGetDefaultConnectionID Lib "calwin32" (pConnHandle As Long) As Long

Public Declare Function NWGetConnectionNumber Lib "calwin32" (ByVal connHandle As Long, _ 
           connNumber As Integer) As Long

Public Declare Function NWGetConnectionInformation Lib "calwin32" (ByVal connHandle As Long, _ 
           ByVal connNumber As Integer, ByVal pObjName As String, pObjType As Integer, _ 
           pObjID As Long, pLoginTime As Byte) As Long


De code om gebruikers (incl context) op te halen:
Visual Basic:
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
    lngResults = NWCallsInit(0, 0)
    If lngResults <> 0 Then GoTo Err_Handler
    
    lngResults = NWGetDefaultConnectionID(lngConnHandle)
    If lngResults <> 0 Then GoTo Err_Handler
    
    lngResults = NWGetConnectionNumber(lngConnHandle, intConnNumber)
    If lngResults <> 0 Then GoTo Err_Handler
    
    lngResults = NWGetConnectionInformation(lngConnHandle, intConnNumber, strTempName, 256, lngID, 0)
    If lngResults <> 0 Then GoTo Err_Handler
    
    GetNovellUsername = Left(strTempName, InStr(strTempName, Chr(0)) - 1)
    
    lngResults = NWCCCloseConn(lngConnHandle)
    
    If Len(Trim(GetNovellUsername)) = 0 Then
        GetNovellUsername = ""
    End If
    
    If Left(GetNovellUsername, 1) = "." Then
        GetNovellUsername = Mid(GetNovellUsername, 2)
    End If
    
    GetNovellUsername = Replace(GetNovellUsername, "|", "")

[ Voor 7% gewijzigd door DukeMan op 19-05-2003 14:03 . Reden: Leesbaarheid verbeterd. ]

Pagina: 1