Einsatz von wsh in einem c++ Programm



  • Hallo allerseits,

    ich hoffe dieses Thema wurde nicht schonmal gestellt, aber leuider wurde die interne Suchfunktion ja deaktiviert.

    Ich wollte wissen wie ich auf WSH-Objekte aus Visual C++ zugreifen kann? Ich will letztendlich ein Programm zur Benutzerverwalung schreiben bzw. ein vorhandenes VBS in ein C++ umschreiben. Und dieses nutzt WSH-Objekte

    Leider bin ich durch Google nicht fündig geworden. Wenn mir da also jemand konkrete Tippsgeben kann, oder ein gutes Tutorial zzum Thema wsh in C++ dann würde mir das sehr weiterhelfen.

    Gruß
    TheOrangeBishop



  • Es macht IMHO nicht viel Sinn WSH nur aus dem Grunde zu verwenden, da man schon WSH-Scripte hat... Du kannst wsh immer mittels csh.exe oder wsh.exe ausführen...

    Aber ich würde direkt die WinAPI bemühen für die Dinge die Du tun willst...

    Benutzerverwaltung z.B. NetUserXxx



  • Villeicht habe ich mich falsch ausgedrückt...

    Um es auf den Punkt zu bringen:

    ich habe im VBS die Zeilen:

    objWshNet = CreateObject("Wscript.Network")
            objWshShell = CreateObject("Wscript.Shell")
    

    und zB

    Account.SetPassword(inputUser)
    

    die will ich sinngemäß in C++ nutzen. Es muss nicht über WSH sein, wenn es recht komfortabel auch über WinAPI geht, solles mir recht sein.

    Aber wie?



  • Was ist denn "Account"?
    Willst Du das Passwort ändern? => NetUserChangePassword



  • Account = GetObject("WinNT://" & domain & "/" & user)
    

    Ja ich waill das Passwort des momentanen Domainenusers ändern. Am liebsten wäre mir wenn der jeweilige User sich vorher erneut authentifizieren müsste, indem er erneut sein aktuelles Passwort eingibt.
    Dein Vorschlag läuft dann aber über das Kommandozeilentool Net ab, oder?

    also, am besten poste ich hier mal das komplette Script, weil ich das Alter des aktuellen Passworts auch noch benötige:

    Set wn = WScript.CreateObject("WScript.Network")
    Set ws = WScript.CreateObject("Wscript.Shell")
    
    domain = wn.UserDomain
    computer = wn.ComputerName
    user = wn.UserName
    Set Account = GetObject("WinNT://" & domain & "/" & user)
    
    PassAge = FormatNumber(Account.get("PasswordAge")/86400)	'beschreibung welches Kennwort gemeint ist
    
    	box = msgbox("Ihr Passwort ist " & cint(PassAge) & "Tage alt. Es wird in " & (120 - cint(PassAge)) & " Tagen ablaufen" & vbcr & "Nach dieser Zeit wird es Ihnen nicht möglich sein sich anzumelden. "& vbcr & vbcr &"Möchten Sie nun Ihr Passwort ändern?", vbYesNo)
    
            if box= 6 Then
    	pwdInput
    	End If
    
    end If
    
    Sub pwdInput()
    
    	inputUser  = InputBox("Bitte geben Sie hier ihr Passwort ein.") 
    	inputUser2 = InputBox("Bitte wiederholen Sie hier ihr Passwortein.") 
    		if inputUser = inputUser2 and inputUser <> "" then
    		account.SetPassword inputUser
    		msgbox("Ihr Kennwort wurde geändert." & vbcr& "Der Computer wird jetzt gesperrt. Bitte melden Sie sich mit ihrem neuen Kennwort an.")
    		ws.Run "rundll32.exe user32.dll,LockWorkStation"
    		Return 1
    		else
    		box = MsgBox("Die beiden Passwörter sind nterschiedlich." & vbcr& vbcr& "Möchten Sie es erneut versuchen?", vbYesNo)
    			If box = 6 Then
    			pwdInput
    			End If
    		End If
    End Sub
    

    So, diese Funktionen sollen als C++ Programm abgebildet werden. Kann ich nicht (ähnlich wie mittels WSH) auf die einzelnen Objekte zugreifen? Gibt es da keine Bibliothek für?


Anmelden zum Antworten