Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Dos Befehle versteckt ausführen

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ] [ 3 ]
000
10.03.2004, 12:47 Uhr
Tody



Hallo zusammen,

ich habe bereits das Forum durchsucht und leider keine ausreichende Hilfe für mein Problem gefunden. Vielleicht habe ich auch falsch gesucht.

Es geht darum DOS-Befehle auszuführen und zwar so, dass kein Fenster angezeigt wird und auch keine Batchdatei vorhanden ist, die von irgendjemand editiert werden kann.

Ich kenne folgende Funktionen:

system
WinExec
ShellExecute

Letztere erlauben es, dass Konsolenfenster auszublenden. Leider scheint man mit ihnen aber nur eine andere Datei starten zu können.

Ich möchte hinterher eine exe haben, die DOS-Befehle ausführt, ohne es anzuzeigen.

Kann mir jemand weiterhelfen?

Danke Tody
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
10.03.2004, 16:06 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


"dos"-befehle sind alles selbst programme. Die meisten davon sind in der WinAPI "übersetzt" worden, d.h man kann alle Funktionen aus seinem Programm ansprechen.

z.B:

del -> unlink / DeleteFile
copy -> CopyFile
etz...
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
11.03.2004, 09:01 Uhr
Patricia



Lass doch dein Programm das File erzeugen, dass du brauchst. Anschließend führst du es mit ShellExecute aus, wobei du ja dein Fenster anzeigen kannst. Zum schluß kannst du die Hilfsdatei, die du erzeugt hast wieder löschen. Somit kann keiner in der Datei was editieren.

Gruß Patricia
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
11.03.2004, 11:33 Uhr
Tody



Hi,

vielen dank erstmal für die tips!

ich wollte mit einem net use ein netzlaufwerk verbinden, dort eine datei ausführen und dann wieder trennen.

ich versuche jetzt die verbindung mit WNetAddConnection2 herzustellen.
VS .Net meckert aber immer, dass er ein externs symbol nicht auflösen kann. dabei habe ich #include <winnetwk.h> eingebunden.

kann mir da jemand helfen? jetzt bin ich warscheinlich wieder im falschen forum...

gruß tobi
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
11.03.2004, 12:06 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


hi, du musst auch die lib hinzulinken (projekteinstellungen -> linker -> zusätzliche librarys)
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
11.03.2004, 13:30 Uhr
Tody



hi,

danke für den tip sowas hatte ich noch im kopf, aber ich finde unter den projekteigenschaften keinen punkt linker.

im VS 6 weiß ich glaub ich noch wo es ist aber im VS .Net...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
11.03.2004, 13:47 Uhr
Tody



alles klar hat sich erledigt!

danke!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
11.03.2004, 15:51 Uhr
Tody



Hi mein Programm lässt sich ohne Probleme kompilieren aber stellt keine Verbindung her. Ich weiß nich woran es liegt. Es landet immer in der default-Meldung.

Hier der komplette Code:


C++:
#include <stdio.h>
#include <tchar.h>
#include <windows.h>
#include <winnetwk.h>


int _tmain(int argc, _TCHAR* argv[])
{
    TCHAR local[32] = "Q:";
    TCHAR res[MAX_PATH] = "\\\\192.168.99.33\\freigabe$";
    TCHAR user[32] = "user";
    TCHAR pass[32] = "password";
    
    NETRESOURCE        netresource;

    netresource.dwType = RESOURCETYPE_ANY;
    netresource.lpLocalName = local;
    netresource.lpRemoteName = res;
    netresource.lpProvider = NULL;

    DWORD err = WNetAddConnection2(
                &netresource,  // points to structure that specifies connection details
                pass,     // points to password string
                user,     // points to user name string
                FALSE);            // set of bit flags that specify
                            // connection options

    if (err == NO_ERROR) {

        MessageBox(NULL, "Verbunden", "", MB_OK);

        // Aktion

        err =  WNetCancelConnection2(
                local,    // pointer to resource name to disconnect
                 0,        // connection type flags
                 1);    // flag for unconditional disconnect

        if (err == NO_ERROR) {
            MessageBox(NULL, "Getrennt", "", MB_OK);
        }
        else {
            MessageBox(NULL, "Fehler beim Trennen", "", MB_OK);
        }

    }
    else {
        switch (err) {
            case ERROR_ACCESS_DENIED:
                MessageBox(NULL, "Access denied", "", MB_OK);
                break;
            case ERROR_ALREADY_ASSIGNED:
                MessageBox(NULL, "Already assigned", "", MB_OK);
                break;
            case ERROR_BAD_DEV_TYPE:
                MessageBox(NULL, "Bad Dev Type", "", MB_OK);
                break;
            case ERROR_BAD_DEVICE:
                MessageBox(NULL, "Bad Device", "", MB_OK);
                break;
            case ERROR_BAD_NET_NAME:
                MessageBox(NULL, "Bad Net Name", "", MB_OK);
                break;
            case ERROR_BAD_PROFILE:
                MessageBox(NULL, "Bad Profile", "", MB_OK);
                break;
            case ERROR_BAD_PROVIDER:
                MessageBox(NULL, "Bad Provider", "", MB_OK);
                break;
            case ERROR_BUSY:
                MessageBox(NULL, "Busy", "", MB_OK);
                break;
            case ERROR_CANCELLED:
                MessageBox(NULL, "Canceled", "", MB_OK);
                break;
            case ERROR_CANNOT_OPEN_PROFILE:
                MessageBox(NULL, "Cannot open Profile", "", MB_OK);
                break;
            case ERROR_DEVICE_ALREADY_REMEMBERED:
                MessageBox(NULL, "Device already remembered", "", MB_OK);
                break;
            case ERROR_EXTENDED_ERROR:
                MessageBox(NULL, "Extended Error", "", MB_OK);
                break;
            case ERROR_INVALID_PASSWORD:
                MessageBox(NULL, "Invalid Password", "", MB_OK);
                break;
            case ERROR_NO_NET_OR_BAD_PATH:
                MessageBox(NULL, "No Net or bad Path", "", MB_OK);
                break;
            case ERROR_NO_NETWORK:
                MessageBox(NULL, "No Network", "", MB_OK);
                break;
            default:
                MessageBox(NULL, "Error", "", MB_OK);
        }
    }

    return 0;
}

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
11.03.2004, 16:13 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


Welcher Fehler kommt denn?

Ein Fehler habe ich:


Zitat:

dwType
If the lpLocalName member points to a nonempty string, this member can be equal to RESOURCETYPE_DISK or RESOURCETYPE_PRINT



d.h du darfst nicht RESOURCETYPE_ANY angeben
--
class God : public ChuckNorris { };

Dieser Post wurde am 11.03.2004 um 16:15 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
11.03.2004, 16:33 Uhr
Tody



Also er kompiliert alles schön und springt beim ausführen immer in den letzten case (default). RESOURCETYPE_ANY ist im Beispiel von Microsoft angegeben und mit RESOURCETYPE_DISK hat es auch nicht funktioniert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ] [ 3 ]     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: