CreateProcess als Admin und Powershell-Datei hidden ausführen



  • Hallo,

    ich bin (noch) nicht in der cpp welt.
    Deshalb brauche ich eine exe-Datei die meine Powershell-Skripte ausführt.
    Als Admin, hidden und ohne auf das Ende zu warten soll sich die exe wieder schließen.

    zuerst habe ich versucht cmd zu starten und "pause" auszuführen und vieles andere auch, aber es interessiert ihn nicht.
    Was passiert? cmd wird geöffnet und fertig.

    system() ist wegen dem nicht warten keine option.
    quasi das googleskript bis auf powershell:

    #include <windows.h>
    
    int main(int argc, char *argv[])
    {
    
    [...]
        CreateProcess( NULL,   // No module name (use command line)
            "cmd.exe %windir%\\powershell.exe",//c:\\start.bat",        // Command line
    [...]
            &si,            // Pointer to STARTUPINFO structure
            &pi );           // Pointer to PROCESS_INFORMATION structure
    
        return 0;
    }
    


  • Dieser Thread wurde von Moderator/in SeppJ aus dem Forum C++ (alle ISO-Standards) in das Forum WinAPI verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.


  • Mod

    Und warum führst Du Powershell nicht direkt aus.
    Wenn Du allerdings ein Consolen Programm erzeugst (ich sehe ein main in Deinem Code), dann wird auch eine Console aufpoppen.
    Also solltest Du ein Windows Programm verwenden.

    Ansonsten lies Die mal die Optionen von Powershell durch:

    PowerShell.exe -windowstyle hidden ...
    


  • ich will für mein Powershell skript eine exe-datei zu erzeugen,
    welches mir ähnlich wie eine batchdatei mein skript ausführt.
    langfristig will ich mein skript in c++ komplett "übersetzen",
    im Moment reicht es mir wenn es ausgeführt wird.

    Mein Fortschritt sieht so aus, dass mein skript ausgeführt wird.
    Ich hab einiges weggelassen(s. main())und hoffe es stört nicht?!

    #include <Windows.h>
    #include <tchar.h>
    
    int main()
    const TCHAR* target = _T("C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe");
    
       CreateProcess( target,
            "%s -command C:\\Scripts\\test.ps1",
            NULL,           
            NULL,           
            FALSE,          
            0,              
            NULL,           
            NULL,           
            &si,            
            &pi ),target;           
    	)
    

    Meine Frage ist jetzt, wie lass ich das ggf. nach adminrechten fragen und ohne sichtbare fenster?


  • Mod

    Was wirfts Du eigentlich hier durcheinander. %s ist ein Maskenzeichen aus printf/sprintf.
    Glaubst Du das dieser Syntax legales C/C++ ist?
    Bitte lerne Grundlagen!



  • Was ich gemacht habe funktioniert zumindest, nehme korrekturen/verbesserungen gerne an.
    Ich weiß, hier ist man nicht anfängerfreundlich. Ich brauche unterstützung für einen richtig parametrierten Aufruf einer Datei, ohne vorher großartig c++ zu können. Da ich zunächst auch nicht mehr mit c++ machen möchte ist das auch schon alles.


  • Mod

    Dann nimm einen Batch-File. Das ist dann wohl einfacher und Deinen Ansprüchen wohl auch genug...


Anmelden zum Antworten