Jump to content



Έλεγχος desktop services/processes από το PDA


Jaco

Recommended Posts

Τελευταία version v.1.0 (18/12/07)

Update 18/12/07

Τελικά προστέθηκε και η λειτουργία να ελέγχονται και τα processes του desktop... Αφού συνδεθείτε τότε στο tab των Processes πατάτε το κουμπί "Get Running Processes" και το PDA κατεβάζει τα ενεργά processes του desktop εκείνη την στιγμή... Κάνοντας uncheck το process που θέλετε τότε κλείνει το πρόγραμμα του desktop... Για να ανανεώσετε τα processes τότε ξαναπατάτε το πλήκτρο...

Τα processes κλείνουν ακαριαία χωρίς να προειδοποιεί στο desktop... όταν το process του desktop κλείσει τότε το pda ειδοποιεί... ακολουθούν δυο εικόνες...

7ek0jlnhvko9quaj1xho_thumb.jpg

mm0lhaii8efbssklk5hb_thumb.jpg

Επίσης πλέον υπάρχει ένας ενιαίος installer και για το desktop και για το pda... Το αρχείο βρίσκεται ΕΔΩ

17/12/07

Επειδή αρκετές φορές ενώ έτρεχα ένα παιχνίδι ή ένα πρόγραμμα το οποίο ήταν direct 3D ή κάτι παρόμοιο και δεν είχα πρόσβαση στο desktop , ήθελα να κλείσω κάποιο service ή process των windows, η μοναδική λύση ήταν να πατήσω Alt+Ctrl+Del ή Alt+Tab να βγω στα windows και μετά να κλείσω το process ή τρέχοντας τα services.msc να κλείσω το service από εκεί... αυτή η διαδικασία δεν είναι ότι καλύτερο γιατί εκείνη την στιγμή που τα windows προσπαθούν να περάσουν το process, του παιχνιδιού για παράδειγμα, στο background και να βγουν στο desktop πολλά μπορούν να συμβούν και το πρόγραμμα να κρεμάσει ή ακόμα και να παγώσουν τα windows αν τα threads του process δεν αφήνουν την εφαρμογή να πάει στο background... έτσι χάνονται όλα τα δεδομένα από την μνήμη του πρόγραμματος που τρέχει εκείνη την στιγμή... όποτε έχοντας το pda να με κοιτά με γουρλωμένα τα μάτια έφτιαξα τελικά ένα πρόγραμμα για το pda το οποίο κλείνει τα services (για την ώρα αργότερα και τα processes) από ένα οποιοδήποτε υπολογιστή που βρίσκεται στο τοπικό δίκτυο... φυσικά το pda πρέπει να έχει πρόσβαση μέσω wireless ή usb στο τοπικό δίκτυο...

Η εφαρμογή χωρίζεται σε δυο μέρη. Ένα πρόγραμμα τρέχει στο desktop το οποίο ουσιαστικά είναι ένας server ο οποίος έχει πρόσβαση στα services και τα process του desktop χρησιμοποιώντας τα API των windows... από εκεί και πέρα το pda συνδέεται σαν client στον server και ζητά τα services/processes του υπολογιστή και τα βγάζει σε μια λίστα ανάλογα με το αν είναι ενεργά, ανενεργά ή και τα δυο... οπότε από το pda μπορεί κανείς να ενεργοποιήσει ή να απενεργοποιήσει τα services που είναι εγκατεστημένα στα windows του desktop χωρίς να χρειάζεται να έχει πρόσβαση στο desktop... αυτό γίνεται από το pda/client στέλνοντας εντολές στον server να κλείσει αυτός τα services και τα processes...

Ένα παράδειγμα της εφαρμογής είναι αν θέλει κάποιος να τρέξει ένα παιχνίδι ή benchmark και να δοκιμάσει την αλλαγή των επιδόσεων του παιχνιδιού σε συνάρτηση με τα services που τρέχουν στο background... τότε ενώ είναι σε D3D mode και δεν έχει πρόσβαση στο desktop μπορεί να πειραματιστεί με τα services... μόλις βρω λίγο χρόνο θα ενσωματώσω να μπορεί το pda να κάνει kill και τα processes που τρέχουν... από την πλευρά του server είναι έτοιμο και μένει μόνο να περάσω και την λειτουργία στο πρόγραμμα του pda...

Ακόμα υπάρχουν κάποια bugs στο software του pda και το κυριότερο είναι στο flow control του tcp/ip αλλά θα διορθωθεί λίαν συντόμως... επειδή στο .net framework το tcp/ip δεν είναι event based, έπρεπε να γράψω ένα multi-threading tcp flow control και ορισμένες φορές δεν τερματίζονται όλα τα threads όπως πρέπει, αλλά αυτό δεν είναι πρόβλημα τουλάχιστον για αρχή... το πρόβλημα θα διορθωθεί σύντομα...

Από την πλευρά του desktop δεν υπάρχει κάποιο γνωστό σε μένα πρόβλημα, αλλά αν βρει κάποιος κάτι ας μου το πει να το διορθώσω...

Αρχικά κατεβάστε τo αρχείο από εδώ...

Το αρχείο έχει δυο φακέλους... ο ένας είναι ο φάκελος με το πρόγραμμα για το desktop και ο άλλος για το pda... κάνετε αντίστοιχα paste τον φάκελο “JPDS Desktop” όπου θέλετε στο desktop και τον φάκελο “JPDS Pda” στο pda σας μέσο του ActiveSync πχ κάπου στην κάρτα μνήμης σας... Σε λίγες μέρες θα έχω φτιάξει πλήρες installer που θα τα κάνει αυτόματα... καλό είναι να εγκαταστήσετε τα vbRuntimes στο desktop και το .net compact framework στο pda...

Ύστερα τρέχετε στο desktop το αρχείο JPDS.exe και λογικά θα πρέπει να εμφανιστεί το παρακάτω παράθυρο στο οποίο πατάτε το “Start Monitoring”...

jp7z9qynp7ucertrvvhd_thumb.jpg

Έτσι το πρόγραμμα σκανάρει τα services του υπολογιστή... επίσης σας δείχνει την ip στην οποία θα πρέπει να συνδεθεί το pda για να ξεκινήσει η επικοινωνία... Στον ίδιο φάκελο υπάρχει το “crc16.dll” το οποίο απλά δημιουργεί τα checksums για την επικοινωνία του tcp/ip (στο pda τo ξαναέγραψα και το ενσωμάτωσα στο source code γιατί το dll αυτό είναι μόνο για x86 και δεν κάνει compile σε ARMv4 που υποστηρίζουν τα pda)...

Από την πλευρά του pda τρέχετε το αρχείο “JacoServices.exe” και εμφανίζεται η παρακάτω οθόνη (αν δεν υπάρχει κάποιο πρόβλημα)...

dmosrmqvtuu1g17v0yju_thumb.jpg

Εφόσον έχετε τρέξει το πρόγραμμα στο desktop, πατάτε στο pda το tab που γράφει “Server” εκεί εμφανίζεται το παρακάτω παράθυρο...

hf62y9vpa7c3cb9lsut7_thumb.jpg

Εδώ δίνεται την IP διεύθυνση του υπολογιστή που τρέχει το JPDS.exe... την πόρτα αφήστε την ως έχει... Το “Retrieve Data Every” είναι για τα processes τα οποία ακόμα δεν τα έχω ενεργοποιήσει και αυτό που κάνει είναι να ανανεώνει αυτόματα στην οθόνη του pda, στο tab των processes, περιοδικά στον χρόνο που του έχουμε ορίσει την κατάσταση των processes του desktop...

Στην συνέχεια πατάτε στο pda “Desktop -> Connect” και το pda προσπαθεί να συνδεθεί στον υπολογιστή... όταν τα καταφέρει θα σας δείξει την παρακάτω εικόνα...

zwhue7ewzodl3utypxs0_thumb.jpg

αν διαμαρτυρηθεί το firewall του desktop κάντε το allow... Εννοείται ότι το pda θα πρέπει ήδη να έχει συνδεθεί στο τοπικό δίκτυο...

Στην συνέχεια πατήστε το tab των “Services”... Εδώ έχετε τρεις επιλογές... η πρώτη είναι να πάρετε όλα τα services του desktop είτε είναι ενεργά, είτε ανενεργά ή και τα δύο, πατώντας αντίστοιχα τα κουμπιά “ACTIVE”, “INACTIVE” και “ALL”... Αν για παράδειγμα πατήσετε “ALL”, τότε το pda αρχίζει και κατεβάζει όλα τα services του υπολογιστή και μόλις τελειώσει σας δείχνει το παρακάτω μήνυμα, το οποίο θα πρέπει να το περιμένετε πριν κάνετε κάτι άλλο...

hp3cavhrfxemm5ptziuk_thumb.jpg

Παρακάτω ακολουθούν κάποια screenshots από όλες τις περιπτώσεις, ALL, ACTIVE, INACTIVE του υπολογιστή μου...

ALL

2f47r2gaf9ato6jrnbux_thumb.jpg

ACTIVE

zgdoo3nvgoqc43gf7n06_thumb.jpg

INACTIVE

63ed8engc929jtkiciu9_thumb.jpg

Δίπλα από κάθε service είναι η κατάστασή του... αν και τα services έχουν πολλές καταστάσεις (πχ stopped, running, pause, pending start, pending stop κτλ) αυτές που μας ενδιαφέρουν είναι 2, τα running και stopped φυσικά... Τα checkboxes δίπλα από κάθε service είναι checked όταν το service στο desktop είναι active και unchecked όταν είναι stopped... από το checkbox λοιπόν μπορούμε να ενεργοποιήσουμε ή να απενεργοποιήσουμε ένα service κάνοντας απλά click στο αντίστοιχο checkbox...

Μπορούμε να ενεργοποιήσουμε ή να απενεργοποιήσουμε ταυτόχρονα πολλά services, αλλά δεν πρέπει να αλλάξουμε view (ALL, ACTIVE, INACTIVE) μέχρι να πάρουμε τηn απάντηση από το desktop (περιορισμός για διάφορους λόγους στο πρόγραμμα του desktop)... Αν για παράδειγμα είμαστε στο view “ACTIVE” και απενεργοποιήσουμε το service ALG (Application Level Gateway), τότε κάνουμε uncheck το checkbox δίπλα από το ALG και όταν το desktop σταματήσει το service μας ενημερώνει με το παρακάτω μήνυμα...

gmaf1t2kud773bj1qisr_thumb.jpg

Αν το ξαναενεργοποιήσουμε τότε όταν τρέξει το service μας ενημερώνει ξανά...

yu09acqiycaj8uhntt89_thumb.jpg

Αν είμαστε στο view “ACTIVE” και απενεργοποιήσουμε κάποια services, τότε αν ξαναπατήσουμε το κουμπί “ACTIVE” και κάνει refresh το pda από το desktop, τότε τα services αυτά δεν θα εμφανίζονται πλέον στο “ACTIVE” view αλλά στο “INACTIVE” view...

Όσοι έχουν pda ας το δοκιμάσουν και ας μου πουν τυχών προβλήματα να τα διορθώσω...

Επειδή το software του pda είναι ακόμα αρκετά buggy γιατί δεν έχω ασχοληθεί ακόμα να «πιάνω» όλα τα exception errors, αν κρεμάσει κλείστε το πρόγραμμα και περιμένετε λίγο μέχρι να κάνει abort κάποιο thread που έχει ξεφύγει (σας ενημερώνει το pda όταν γίνει αυτό) και ξανατρέξτε το πρόγραμμα... Γενικά προσπαθήστε να ακολουθήσετε την διαδικασία που περιέγραψα πιο πάνω για να έχετε λιγότερα προβλήματα...

Οι δοκιμές μου μέχρι στιγμής έχουν γίνει σε Windows XP (λογικά δουλεύει και σε Vista) και σε Windows Mobile 5 (λογικά πάλι παίζει και στα WM6)... :)

Link to comment
Share on other sites

Πολυ καλη ιδεα. Αλλα δεν ειμαι και πολύ χαρούμενος με το concept να ανοιγω άλλη μια πόρτα στο PC και μάλιστα σε προγραμμα που εχει admin access.

Ισως μια ιδεα για βελτίωση ειναι να κάνεις route την πόρτα 7777 κάτω απο SSH ή να συνδέεσαι κατευθείαν σε SSH.

Υλοποιώ κάτι παρόμοιο στο mac μου αυτήν την περίοδο, μόνο που εκει δεν θα εχω ενα .exe για να ελεγχω τον υπολογιστή απο το κινητό αλλα webserver που θα συνδέετε με το mac/linux. Η επικοινωνία μέσω web-server και Mac γινεται μέσω SSH και ο webserver εχει την δυνατότητα να τρέχει shell + scp στον Mac (full ελεγχο σε εφαρμογές, αρχεία, συσκευές).

Link to comment
Share on other sites

Το ssh είναι πολύ πέρα από την εφαρμογή...

και των γνώσεων μου προγραμματιστικά... :rolleyes:

Ωστόσο υπάρχουν δυο λύσεις σε αυτό...

μία είναι να κάνεις ssh tunneling και από την πλευρά του pda και από την πλευρά του pc... υπάρχει το pocketPutty και το Putty αντίστοιχα που μπορούν να κάνουν το tunneling και από εκεί και πέρα είναι να μιλάνε ως έχουν οι δυο εφαρμογές, χωρίς να αλλάξει κάτι...

δεύτερον η χρήση του προορίζεται καθαρά για τοπικό δίκτυο... οπότε οι πόρτες εξωτερικά κόβονται ούτως ή άλλως από τον router, οπότε μόνο από το εσωτερικό δίκτυο μπορείς να έχεις πρόσβαση και πάλι με ένα firewall εμποδίζεις οποιαδήποτε άλλη εφαρμογή να έχει πρόσβαση στην πόρτα αυτή πέρα από το πρόγραμμα...

Link to comment
Share on other sites

Συμφωνώ... Στην παρούσα φάση του σχεδιασμού σου θα σου προέτρεπα να εφαρμόσεις tunneling. Ακόμα και αν δεν προορίζεται για χρήση εκτός lan, καλό ειναι να εχουμε την ασφάλεια πάντα στο μυαλό μας (ποτε δεν ξέρεις αν θα μπουκάρει κανενας hacker στο lan σου ;) )

ΥΓ.

Στην περίπτωση αυτής της λύσης θα πρεπει η εφαρμογή σου στον Η./Υ να επιτρέπει σύνδεση μόνο απο τον localhost/ 127.0.0.1 και να κάνει reject αλλες IP.

Link to comment
Share on other sites

Update 18/12/07

Τελικά προστέθηκε και η λειτουργία να ελέγχονται και τα processes του desktop... Αφού συνδεθείτε τότε στο tab των Processes πατάτε το κουμπί "Get Running Processes" και το PDA κατεβάζει τα ενεργά processes του desktop εκείνη την στιγμή... Κάνοντας uncheck το process που θέλετε τότε κλείνει το πρόγραμμα του desktop... Για να ανανεώσετε τα processes τότε ξαναπατάτε το πλήκτρο...

Τα processes κλείνουν ακαριαία χωρίς να προειδοποιεί στο desktop... όταν το process του desktop κλείσει τότε το pda ειδοποιεί... ακολουθούν δυο εικόνες...

7ek0jlnhvko9quaj1xho_thumb.jpg

mm0lhaii8efbssklk5hb_thumb.jpg

Επίσης πλέον υπάρχει ένας ενιαίος installer και για το desktop και για το pda... Το αρχείο βρίσκεται ΕΔΩ

Για ότι καινούργιο ενημερώνω και το πρώτο post...

Για όποιο πρόβλημα πείτε μου, ακόμα είμαι σε beta version...

Link to comment
Share on other sites

  • 1 year later...

Ενδιαφέρουσα εφαρμογή Jaco! Μπράβο :)

πρόβλημα νούμερο 1: πήγα να κλείσω τον windows media player κι έφαγε φρίκη (έκλεισε ο client). Ακριβώς πριν πήγα να κλείσω ένα άλλο process (pnkbstra.exe - punk buster) και δεν έκανε τπτ (ούτε έκλεισε το process ούτε έβγαλε κάποιο μήνυμα). Τη δεύτερη φορά που δοκίμασα να κλείσω το wmplayer έκλεισε κανονικά :)

Link to comment
Share on other sites

Ευχαριστώ deninho... :)

Πρέπει να υπάρχουν κάποια bugs σίγουρα, δεν θυμάμαι τον κώδικα, αλλά αν του ρίξω μια ματιά ίσως μπορώ να του κάνω κάποιες βελτιώσεις...

Αν το κάνει σπάνια, μια στο τόσο, τότε δεν πειράζει, αν όμως είναι επαναλαμβανόμενο τότε να το κοιτάξω...

Άσχετο, αλλά είδα την ημερομηνία του προγράμματος και έκλεισε 1 χρόνο ζωής, είχε γενέθλια πριν ένα μήνα... :)

Link to comment
Share on other sites

  • 3 weeks later...

Archived

This topic is now archived and is closed to further replies.

×
×
  • Δημιουργία...

Important Information

Ο ιστότοπος theLab.gr χρησιμοποιεί cookies για να διασφαλίσει την καλύτερη εμπειρία σας κατά την περιήγηση. Μπορείτε να προσαρμόσετε τις ρυθμίσεις των cookies σας , διαφορετικά θα υποθέσουμε ότι είστε εντάξει για να συνεχίσετε.