Username ermitteln (Kein "Getusername_"!)

Anfängerfragen zum Programmieren mit PureBasic.
CNESM
Beiträge: 311
Registriert: 29.08.2004 15:16
Kontaktdaten:

Beitrag von CNESM »

jpd hat geschrieben:Hi CNESM,

Mit der net Funktion erhalte ich als Rückgabewert nur ein "H"?!?!
unicode on?
Manchmal sind es die kleinen Dingen, die das Leben so entscheidend machen :-D
Benutzeravatar
Shardik
Beiträge: 746
Registriert: 25.01.2005 12:19

Beitrag von Shardik »

jpd hat geschrieben:die variable logonserver existiert immer (ab NT).
Das ist zwar korrekt, aber bei Windows NT 4 wird die Umgebungsvariable LOGONSERVER nach erfolgreichem Logon gelöscht, sodaß Anwendungsprogramme sie nicht mehr auslesen können. (http://windowsitpro.com/article/article ... -i-do.html)
Abhilfe schafft das Setx Utility aus dem Microsoft Windows NT Resource Kit

Code: Alles auswählen

setx MyLogonServer %logonserver%
.
Aber wahrscheinlich setzt außer gnozal sowieso keiner mehr Windows NT ein. Ich habe vor drei Wochen meinen NT Entwickler-PC endgültig abgegeben und entwickle mittlerweile nur noch für Windows XP und Linux. Heute mußte ich noch einmal eine alte NT-Kiste anwerfen, weil ich noch mit ResourceHacker einige Animationen aus alten NT-DLLs extrahieren mußte, die unter XP nicht mehr vorhanden sind. :twisted:
jpds letztes Code-Beispiel zur Ausgabe aller Anmeldeserver gibt bei mir leider nur eine Leerzeile aus (getestet unter PB 4.20 und 4.30 jeweils im ANSI- und Unicode-Modus). Ich bin aber zu dem Entschluß gekommen, daß die Umgebungsvariable LOGONSERVER wirklich ausreichen sollte... :wink:
Benutzeravatar
jpd
Beiträge: 380
Registriert: 14.02.2005 10:33

Beitrag von jpd »

Hi Shardik,

interessante sache wusste nicht das volatile variablen existieren.. :shock:

aber das kann man ja in unseren fall noch verkraften :-)


ich habe mich auch mit eine andere methode befasst um an
den langen benutzername zu kommen... WMI

besser gesagt WMI über COMate

finde ich wesentlich einfacher.

mich würde interessieren ob es in umgebungen wie Netware das funktioniert.

ein link zur library.. ooops ... include

http://www.purebasic.fr/english/viewtopic.php?t=33983

Ciao
jpd

Code: Alles auswählen


XIncludeFile "COMate.pbi" 

Procedure.s LongUsername(UserName.s="")

Define.COMateObject objWMIService,colUserInfo
colUsers.COMateEnumObject 

strComputer.s = "." 
objWMIService = COMate_GetObject("winmgmts:\\" + strComputer + "\root\cimv2", "") 
If objWMIService 
  colUsers=objWMIService\CreateEnumeration("ExecQuery('Select * from Win32_UserAccount Where name= $0027" + username +"$0027')") 
  
  If colUsers
    colUserInfo= colUsers\GetNextObject() 
    While colUserInfo
      message.s= message+"UserDomain:"   + #TAB$ + colUserInfo\GetStringProperty("name")    + #LF$ 
      message=message+ "User Full Name:"   + #TAB$ + colUserInfo\GetStringProperty("FullName")    + #LF$ 
      
      colUserInfo= colUsers\GetNextObject() 
      Wend 
      colUsers\Release() 
  EndIf
EndIf
ProcedureReturn message
EndProcedure
message.s=LongUsername("jpd")
MessageRequester("UserInfo",message)
   
PB 5.10 Windows 7 x64
Benutzeravatar
Shardik
Beiträge: 746
Registriert: 25.01.2005 12:19

Beitrag von Shardik »

jpd hat geschrieben:ich habe mich auch mit eine andere methode befasst um an
den langen benutzername zu kommen... WMI

besser gesagt WMI über COMate

finde ich wesentlich einfacher.

mich würde interessieren ob es in umgebungen wie Netware das funktioniert.
Hallo jpd,

vielen Dank für Dein WMI-Beispiel zur Ermittlung des "FullName". Es funktionierte in meiner Umgebung unter Windows XP Professional mit Novell Netware Anmeldeserver direkt auf Anhieb. :allright:

Ich hatte vorher auch schon überlegt, eine WMI-Lösung einzusetzen. Aber andererseits kann man nicht unbedingt davon ausgehen, daß WMI unter Windows immer installiert ist. Ohne Nach-Installation sollte WMI unter Windows ME, 2000, XP und Server 2003 eigentlich immer standardmäßig vorhanden sein und kann unter Windows 9x und Windows NT nachinstalliert werden. Ich erinnere mich aber auch noch daran, daß ich bei der Nutzung des Kommandozeilenprogramms WMIC bei einem Kunden feststellen mußte, daß WMIC unter Windows XP Home überhaupt nicht installiert ist und noch eigens aus dem Service Pack 2 extrahiert und nachinstalliert werden mußte. Eine gute Anleitung zur WMIC-Nutzung liefert übrigens der Beitrag "Eins für alles - Windows im Griff mit WMI" in c't 15/2006, S.204-207.
Benutzeravatar
jpd
Beiträge: 380
Registriert: 14.02.2005 10:33

Beitrag von jpd »

Hallo Shardik,
Es funktionierte in meiner Umgebung unter Windows XP Professional mit Novell Netware Anmeldeserver direkt auf Anhieb.
Danke das du dir die zeit genommen hast!
freut mich das es auch in nw ungebung funktioniert!

Aber andererseits kann man nicht unbedingt davon ausgehen, daß WMI unter Windows immer installiert ist.
deswegen mache ich es mir schwer sachen mit WMI zu programmieren.
Ich bin immer einer das denkt meine programmen müssten immer zur gesamte MS OS palette kompatibel sein.

Eine gute Anleitung zur WMIC-Nutzung liefert übrigens der Beitrag "Eins für alles - Windows im Griff mit WMI" in c't 15/2006, S.204-207.
für erste schritte ist es bestimmt eine interessante lektüre

Danke Dir.
Grüsse
jpd
PB 5.10 Windows 7 x64
Antworten