webForumDet fria alternativet

Delfråga 3: Exekvera exe.. igen

C/C++ur C/C++

5 svar · 431 visningar · startad av NoiseMaker

NoiseMakerMedlem sedan sep. 2001171 inlägg
#1

Enligt ett tidigare råd har har jag försökt få en exefil att exekveras genom följande kodsnutt:

#include <stdlib.h>
...
char *cmd = "C:\\foo\\bar.exe";
system(cmd);

Nu får jag såklart detta enkla projekt inte att fungera korrekt. I min slutgiltliga lösning gör jag en "extension" till ett scriptspråk (lasso) som skall exekvera en fil och allt funkar bra förutom att själva målet inte körs.

För att prova vad som vad kan vara fel försökte jag då skapa en enkel Win32 Console Project i mitt Visual C++ som skall göra samma sak. Detta funkar inte heller. Koden borde inte kunna bli enklare än så här tycker jag:

#include "stdafx.h"
#include <stdlib.h>

int _tmain(int argc, _TCHAR* argv[])
{
	char *cmd = "C:\\foo\\bar.exe";
	system(cmd);
	return 0;
}

Men som sagt funkar inte heller detta. Någon vänlig själ som kan förklara vad jag missar. Vet inte om det är det är intressant men jag klistrar in debugloggen här nedan också:

'test4.exe': Loaded 'C:\Documents and Settings\Kalle Samuelsson\Mina dokument\Visual Studio Projects\test4\Debug\test4.exe', Symbols loaded.
'test4.exe': Loaded 'C:\WINDOWS\system32\ntdll.dll', No symbols loaded.
'test4.exe': Loaded 'C:\WINDOWS\system32\kernel32.dll', No symbols loaded.
'test4.exe': Loaded 'C:\WINDOWS\system32\apphelp.dll', No symbols loaded.
'test4.exe': Loaded 'C:\WINDOWS\system32\version.dll', No symbols loaded.
'test4.exe': Loaded 'C:\WINDOWS\system32\advapi32.dll', No symbols loaded.
'test4.exe': Loaded 'C:\WINDOWS\system32\rpcrt4.dll', No symbols loaded.
The program '[1788] test4.exe: Native' has exited with code 0 (0x0).

Som vanligt är all hjälp grymt uppskattad!!

EDIT: Felstavning

PeWMedlem sedan juni 200010 432 inlägg
#2

Ser mer ut som att utvecklingsmiljön inte är korrekt inställd än att det är fel på koden såvida du har en annan användning för "t_main" än som ett vanligt "main". Anropet med "system(..)" är i sin ordning.

NoiseMakerMedlem sedan sep. 2001171 inlägg
#3

hmm.. i så fall e jag lite bortkommen igen.. har provar ett par olika konfigurationer nu och smörjan vägrar köra. Jag ser ju ett "DOS-fönster" poppa upp och försvinna igen men den fill jag vill skall exekveras när programmet körs startas aldrig.

Något förslag på vad för konfiguration i utvecklingsmiljön jag kan kontrollera?

spangoMedlem sedan juni 20008 205 inlägg
#4

Det kan vara något som är snett med själva strängen du skickar in till system(). Hur ser det ut, exakt? Kom ihåg att du måste ha dubbelfnuttar runt kommandoradsargument som innehåller mellanslag:

char *cmd = "C:\\foo\\bar.exe \"C:\\Documents and Settings\\Kalle Samuelsson\\Mina dokument\\Visual Studio Projects\\test4\\filen.ext\"";

Har du inte med fnuttarna uppfattas det som två argument, vilket skulle kunna resultera i att programmet du försöker köra kräker ur sig nåt i stil med "File not found" och avslutar.

NoiseMakerMedlem sedan sep. 2001171 inlägg
#5

du har helt rätt.. hade gjort lite fel där men nu är det tillrättat och fungerar bra. Självklart uppstår då genast ett annat intressant problem.

System() kör programmet som användaren "system" och det varkar skapa ett problem eftersom programmet jag kör vill rita ut saker på skärmen men jag är inloggad som administrator. Kan man på nått sätt styra vilken användare processen skall köras under med kommandot system()? Aöternativt.. kan man logga in som "system"-användaren på nått sätt? Jag kör windows XP sp2 men det skall även funka på win2k.

erghh.. jag känner hur lösningen närmar sig så jag kan sluta misbruka er kunskap =D

EDIT: Nej nu hade jag för brottom. Det e IIS:en som går som system o det e därför processen jag drar igång som system också antar jag. Illa Men frågan kvarstår.. går det tvingna processen att gå som en speciell användare?

NoiseMakerMedlem sedan sep. 2001171 inlägg
#6

Ni får ursäkta mig.. läser man så löser man =) Går ju hur bra som helst att ställa in på tjänsten.. alltså vilket konto den skall gå som.. alternativt om den skall ha rättighet att påverka gränssnittet för inloggad användare.

134 ms totalt · 3 externa anrop · v20260731065814-full.29ac60f6
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)