Estoy escribiendo un programa (Win32 Console) que envuelve otro proceso; que toma los parámetros como en el siguiente ejemplo:Convirtiendo argv en una sola cadena
runas.exe user notepad foo.txt
Esto es: runas
análisis sintáctico de user
y luego se ejecutará bloc de notas, pasando los parámetros restantes.
Mi problema es que argv
se divide en parámetros individuales, pero CreateProcessAsUser
requiere un solo parámetro lpszCommandLine
.
Construir esta línea de comando probablemente no sea tan simple como unir argv
con espacios. ¿Alguna sugerencia?
Esto es solo un ejemplo. Mi primer argumento no es realmente un nombre de usuario, y podría tener espacios en él. Esto hace que el análisis manual del resultado de GetCommandLine
sea complicado.
De forma similar, una concatenación ingenua de argv
no funcionará, porque debe tratar el caso en el que se citaron los argumentos originales y pueden tener espacios en ellos.
diría "argv unirse de nuevo juntos con espacios" estaría bien. ¿Qué te hace pensar lo contrario? –
Benoît, porque no funcionaría para el bloc de notas del usuario 'runas.exe' foo bat.txt ''. – avakar
No olvides citar cualquier args que contenga espacios – Hasturkun