Archief - [PROG][C#] .exe van lopend process achterhalen.

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

DiDoria

Legacy Member
Hoi,

Ik ben een programmatje aan het maken dat alle lopende programma's achterhaald (dat is niet zo moeilijk in C#) en die alle opstart programma's achterhaald in het registeren (ook goed te doen :)).

MAAR!
Hoe kan ik van een kopende process dan het pad achterhalen. Stel in je lijst staat java.exe. Tof maar waar op mijn computer kan ik dit dan trg vinden? Kan dit?

thx!

[AiR] LeViaTHaN

Legacy Member
Code:
            Process[] procs = Process.GetProcesses();

            foreach (Process p in procs)
            {
                Console.WriteLine(p.ProcessName);
                Console.WriteLine("Path {0}", p.MainModule.FileName);
            }

Wel ff opletten kan zijn dat je van dat process niet de mainmodule kan opvragen en dan krijg je een Win32Exception, ff catchen dus ;)

DiDoria

Legacy Member
Zeer nice! ZEER nice! Ik neem aan dat hij soms geen pad geeft als het een DDL is maar voor alle exe's geeft hij wel iets trg zo te zien :)

echt bedankt!

DiDoria

Legacy Member
Je weet btw ook niet hoe je al de gebruikersnamen van je PC kan ophalen?

Met:
txtTest.Text += System.Environment.UserName;
kan je de huidige gebruiker opvragen maar is er een plaats in het registrer waar alle gebruikersnamen staan?

*edit mss gwn beter de mappen in "C:\Documents and Settings" lezen en ik heb ze ook :)

thx!

DiDoria

Legacy Member
En laatste vraag :D

Als je een snelkoppeling hebt (ink) hoe kan je dan de .exe acherhalen?

thx!

Messias.

Legacy Member
DiDoria zei:
En laatste vraag :D

Als je een snelkoppeling hebt (ink) hoe kan je dan de .exe acherhalen?

thx!

Als ge geen methode vindt die doet wat ge nodig hebt kunt ge het nog altijd zelf lowlevel doen. Specificaties hier. (natuurlijk gereverse engineered, of wat dacht ge? :))

DiDoria

Legacy Member
Mja, ik heb het al geopend en op bepaalde plaatsen gekeken maar ik krijg alleen 'rare' tekens. Als ik een .ink in kladblok open doe zou normaal ergens het pad moeten staan maar zelfs dat niet...

*edit
Zelfde geld voor .exe files. Hoe kan ik de parameters van een .exe ophalen? (vb: winWord.exe -TestParameter) ik dacht ook gwn dat trg te vinden als je het opent in C# als een tekstbestand en dan gwn tekst zoeken... Maar niets is minder waar :(

Het doel is dus dat ik van alle snelkoppelingen (op bureaublad) en processen het pad naar de .exe achterhaal om dan in deze exe te kijken naar de parameters. De lijst van .exe's vergelijk ik dan met een andere 'rare .exe files' om dus alles wat sneller te laten gaan :)

Messias.

Legacy Member
Maar nee, da's een binair formaat en geen text formaat. Je moet zo'n .lnk bestand maar eens inspecteren met een hex editor, met notepad ga je niet veel wijzer worden. En in die pdf stond trouwens iets veel interessanter voor jou, nl. "If you’re writing software under Windows I highly recommend you use the IShellLink interface."

Hier is een voorbeeld + wrapper class in C# dat gebruik maakt van die interface. Geen dank.

DiDoria

Legacy Member
Hey! THX!!!!!!!!!!!!!!
Ik heb het erin gekregen :) echt zalig gwn! 1000x dank toch! Ik ga morgen eens proberen of ik ook zo de parameters van een .exe bestand kan ophalen zo ja, nog zaliger :p

:bow:

DiDoria

Legacy Member
Hoi,

Weet iemand een .exe met parameters zodat ik daarwat mee kan prutsen? Want ik vind er niet direct één en ik zou ook niet goed weten waar ik het manueel kan toevoegen. Dan kan ik eens zien hoe ik het kan ophalen!

thx

[AiR] LeViaTHaN

Legacy Member
gewoon in uw Main method

static void Main(string[] args)

die args zijn uw argumenten dat je meegeeft aan uw executable. Elk argument is gescheiden door een spatie.

Dus: defrag d:\vol\mountpoint -w -f
- Executable = defrag
- args[0] = d:\vol\mountpoint
- args[1] = -w
- args[2] = -f

En deze argumenten kan je dus verder gaan gebruiken un uw programma ;)

De meeste exe's die argumenten kunnen ontvangen zullen deze tonen als je /? als argument meegeeft. Let wel de programmeur dient hiermee rekening te houden, als je een lazy programmeur hebt zal dit 9/10 niet gebeurd zijn.

DiDoria

Legacy Member
[AiR] LeViaTHaN;8296068 zei:
gewoon in uw Main method

static void Main(string[] args)

die args zijn uw argumenten dat je meegeeft aan uw executable. Elk argument is gescheiden door een spatie.

Dus: defrag d:\vol\mountpoint -w -f
- Executable = defrag
- args[0] = d:\vol\mountpoint
- args[1] = -w
- args[2] = -f

En deze argumenten kan je dus verder gaan gebruiken un uw programma ;)

De meeste exe's die argumenten kunnen ontvangen zullen deze tonen als je /? als argument meegeeft. Let wel de programmeur dient hiermee rekening te houden, als je een lazy programmeur hebt zal dit 9/10 niet gebeurd zijn.

Maar ik heb geen main methode in mijn C# programma. Ik heb alleen maar de paden naar mijn .exe bestanden en ik moet dan zo een methode schrijven om de parameters (als die er zijn) eruit te halen. Ik heb geen enkele .exe met parameter gevonden op mijn PC dus om te testen gaat het nog lastig worden :) bij de opstart proccessen in mijn register staan er wel argumenten bij (gwn in de pad string zelfs...) dus dat is gwn splitsen op "/".

Moet ik voor de .exe niet de zelfde benadering dan .ini doen?
thx

Tyfius

Legacy Member
Als je geen main methode hebt in je programma runned dit toch niet?
Tenzij een DLL dan, maar het is dan de bedoeling om daarrond een .exe te maken die dan parameters kan doorgeven aan een API functie.

DiDoria

Legacy Member
Het is idd een DLL (een gewone functie die een pad naar een .exe meekrijgt). Maar wat bedoel je dan met daarrond een .exe te maken en de parameters doorgeven aan een API-functie?

DiDoria

Legacy Member
Messias. zei:
Maar nee, da's een binair formaat en geen text formaat. Je moet zo'n .lnk bestand maar eens inspecteren met een hex editor, met notepad ga je niet veel wijzer worden. En in die pdf stond trouwens iets veel interessanter voor jou, nl. "If you’re writing software under Windows I highly recommend you use the IShellLink interface."

Hier is een voorbeeld + wrapper class in C# dat gebruik maakt van die interface. Geen dank.

is dat alleen vr windows XP btw? Want hij crached op 2000 hierop :(
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan