Problem mit Leerzeichen bei system(...) und CString
-
Ich möchte, wenn ein Eingabefeld meiner Anwendung leer ist
den Befehl system mit einem Leerzeichen am Ende aufrufen.Also:
if(m_eingabe==""){ setzepass.Format("net user %s ",username); }else{ setzepass.Format("net user %s %s",changepass,neuespass); }
Nur leider wird irgendwie in der ersten Formatzeile das Leerzeichen
nicht genommen. Es wird praktisch "net user administrator" und nicht
"net user administrator <leerzeichen>" ausgeführt.
-
Dazu natürlich der Aufruf, aber ich glaube das erklärt sich von
selbst wenn ich system(..) schreibe.system(setzepass);
-
Ich weis nicht, was "system" da möglicherweise wegoptimiert, aber wenn Du volle Kontrolle haben willst, dann starte doch den Prozess mittels "CreateProcess".
http://msdn.microsoft.com/library/en-us/dllproc/base/createprocess.asp
-
Hmm, ist noch immer das gleiche Ergebnis. Das Leerzeichen verschwindet.
Evtl. mache ich auch was falsch?setzepass.Format("net user %s ",changepass); LPSTR setme; setme=setzepass.GetBuffer( setzepass.GetLength()); PROCESS_INFORMATION pi; STARTUPINFO si = {sizeof(si)}; CreateProcess(NULL,setme,NULL,NULL,TRUE,NORMAL_PRIORITY_CLASS,NULL,NULL,&si,&pi);
-
Das Leerzeichen am Schluß bringt eh nix!!!!!!!
-
!!!!!!!!!!!!!! schrieb:
Das Leerzeichen am Schluß bringt eh nix!!!!!!!
Und wie soll ich dann bitte das Benutzerkennwort auf "leer" setzen?
-
Ja, was soll denn das Leerzeichen bewirken?
-
NetUserChangePassword
-
Wird kein abschließendes Leerzeichen angegeben, wird nur
eine Übersicht zum Benutzerkonto ausgegeben. Wird ein Leerzeichen
am Ende angegeben, wird es als "Passwort = Leer" interpretiert.
Und somit ist kein Passwort mehr für das Konto anzugeben bei der
Anmeldung.
-
system(...); is out of time... may be you should usw ShellExecute(...);!
-
Ok scheinbar hab ich mich vertan. Mit dem Leerzeichen das geht offenbar doch
nicht! Hätte schwören können das mal so gemacht zu haben. Naja, irren ist...
-