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 SubSo, 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?