Snips Δημοσιεύτηκε Νοέμβριος 28, 2008 #1 Κοινοποίηση Δημοσιεύτηκε Νοέμβριος 28, 2008 Υπάρχει τρόπος να δημιουργήσεις κατά κάποιον τρόπο "προφίλς" απο services που εκκινούν με την είσοδο στα windows?Δοκίμασα να κάνω διαφορετικούς λογαριασμούς χρηστών (administrators όλοι) αλλά ότι αλλαγή κάνεις στα services/proccesses που θες να εκκινούν στον ένα χρήστη, περιέργως ισχύει και στους άλλους. Link to comment Share on other sites More sharing options...
jpavly Νοέμβριος 28, 2008 #2 Κοινοποίηση Νοέμβριος 28, 2008 Λογικά επειδή τα services ξεκινάνε πριν το επίπεδο του user login. Δεν ξέρω αν γίνεται με hardware profiles, δοκίμασε το.Yeap, όντως γίνεται με hardware profiles. http://www.blackviper.com/WinXP/xpprofiles.htm Link to comment Share on other sites More sharing options...
spH3RiCal Νοέμβριος 28, 2008 #3 Κοινοποίηση Νοέμβριος 28, 2008 Yeap μπορεις να συμπεριλαβεις και devices αμα θες.. Link to comment Share on other sites More sharing options...
Jaco Νοέμβριος 28, 2008 #4 Κοινοποίηση Νοέμβριος 28, 2008 Χμμ... μου ήρθε μια ιδέα... τα hardware profiles πρέπει να τα επιλέξεις όταν μπουτάρει το pc, οπότε αν αλλάξεις χρήστη θα πρέπει να κάνεις restart και να επιλέξεις άλλο profile... σωστά...?Αν ισχύει το παραπάνω, τότε μπορεί να φτιαχτεί εύκολα ένα λογισμικό το οποίο θα είναι command line και θα τρέxει μια φορά σε κάθε Login ενός χρήστη από τον φάκελο του startup του χρήστη... ο κάθε χρήστης θα έχει δικό του configuration, το οποίο θα το περνάει όταν τρέχει το πρόγραμμα και θα ξεκινάει ή θα σταματάει τα services τα οποία έχει καταχωρημένα το configuration... έχω σχεδόν έτοιμο τον κώδικα από εδώ (http://www.thelab.gr/showthread.php?t=45279) για τον έλεγχο των services από το pda που είχα γράψει, οπότε με μια μικρή μετατροπή έρχεται κουτί στο παραπάνω σενάριο...το Σ/Κ θα το κοιτάξω... Link to comment Share on other sites More sharing options...
jpavly Νοέμβριος 28, 2008 #5 Κοινοποίηση Νοέμβριος 28, 2008 Μπορεί να τον μαζέψει κάποιος αυτόν; Μη του μπει ιδέα, αμέσως να το φτιάξει Link to comment Share on other sites More sharing options...
Jaco Νοέμβριος 28, 2008 #6 Κοινοποίηση Νοέμβριος 28, 2008 Έτοιμο... εντάξει ρα δεν είναι μόνο το κάψιμο στον εγκέφαλο, απλά ήταν καλή ιδέα και πολλοί μπορεί να το βρουν χρήσιμο... Στα γρήγορα λοιπόν, μπορεί να έχετε όσα account θέλετε στα Windows και να έχετε αφήσει τα services στα default... πέρνετε το exe και το config.txt και τα βάζετε στον φάκελο...: C:\Documents and Settings\[uSER_NAME]\Start Menu\Programs\Startup και στο κάθε config.txt φτιάχνετε τα services όπως θέλετε βάση του παρακάτω format...: SERVICE_NAME=SERVICE_START_TYPE,SERVICE_STATE όπου...: SERVICE_NAME, το όνομα του service όπως ακριβώς φαίνεται στο "Start->Run->Services.msc" SERVICE_START_TYPE, το state του service που θέλετε {AUTO, MANUAL,DISABLED} SERVICE_STATE, την κατάσταση του service που θέλετε {STOP,START} παράδειγμα...: #User=<USER_NAME>#SERVICE_NAME=SERVICE_START_TYPE,SERVICE_STATE# SERVICE_CONFIG = {AUTO,MANUAL,DISABLED}# SERVICE_STATE = {STOP,START}# Examples:# Alerter=DISABLED# Alerter=AUTO,STOP# Alerter=MANUAL,STARTUser=Jacopassword=#Alerter=DISABLED,STOP#Apache2.2=DISABLED,STOP#Application Management=DISABLED,STOP#Automatic Updates=DISABLED,STOP#Event Log=DISABLED,STOPAlerter=DISABLED,STOPApache2.2=AUTO,STARTApplication Management=MANUAL,STOPAutomatic Updates=AUTO,STARTEvent Log=AUTO,START Το user και password δεν είναι σημαντικά, αλλά τα έχω βάλει σε περίπτωση που κάποιος έχει password στο account του... δεν έχω δοκιμάσει αν δουλεύει όταν το account έχει pass για να δω αν παίζει κανονικά... Ότι είναι μετά από '#' είναι σα να μην υπάρχει... οπότε καλό είναι με '#' να έχετε σημειωμένα τα defaults, έτσι ώστε αν φάει ήττα το λειτουργικό να μπορείτε να το επαναφέρεται από safe mode, είτε σβήνοντας από τον φάκελο του Startup το exe είτε βγάζοντας την '#' από τα defaults και την βάλετε στις δικές σας τροποποιήσεις... λοιπόν λόγο χρόνου δεν έκατσα να ασχοληθώ με το error checking και τα error messages, οπότε όταν χτυπάει το πρόγραμμα βγάζει στεγνά ένα τετραφήψιο σφάλμα των windows που έχει να κάνει με τα services και αναφέρονται εδώ... Το ίδιο σφάλμα θα βγάλει αν πάτε να κάνετε την ίδια ενέργεια από το services.msc με την διαφορά ότι εκεί εξηγεί και το σφάλμα... Επομένως, πριν γράψετε το δικό σας script βεβαιωθείτε με το services.msc ότι η σειρά και οι εντολές που θέλετε να εκτελέσει το πρόγραμμα μπορούν να εκτελεστούν κανονικά κάνοντάς το την πρώτη φορά μόνοι σας... ο λόγος για αυτό είναι ότι υπάρχουν dependencies ανάμεσα στα services με αποτέλεσμα να μην μπορεί να τρέξει ή τα τερματιστεί ένα service αν δεν πληρούνται οι κατάλληλες προϋποθέσεις... Τα αρχεία είναι τα παρακάτω...: http://rapidshare.com/files/168327919/config.txt http://rapidshare.com/files/168333897/StartUpServices.exe Αν δεν δουλεύει μόνο του το .exe τότε μάλλον χρειάζονται τα vbRuntimes ή αλλιώς τρέξτε το setup παρακάτω...: http://rapidshare.com/files/168334145/StartUpServices.zip και μετά κάνετε copy/paste το StartUpServices.exe με το config.txt στους startup φακέλους των χρηστών που θέλετε... Θέλει υποχρεωτικά το config.txt να είναι παρέα στον ίδιο φάκελο με το StartUpServices.exe... Link to comment Share on other sites More sharing options...
voudas Νοέμβριος 28, 2008 #7 Κοινοποίηση Νοέμβριος 28, 2008 respect... ακόμα μια φορά Δημήτρη... Link to comment Share on other sites More sharing options...
Jaco Νοέμβριος 28, 2008 #8 Κοινοποίηση Νοέμβριος 28, 2008 Thanks Κωστή... Γίνεται και εύκολα με command prompt και scripting σε windows, αλλά δεν έχει πλάκα... Link to comment Share on other sites More sharing options...
Nephiλiμ Νοέμβριος 28, 2008 #9 Κοινοποίηση Νοέμβριος 28, 2008 και δεν ηρθε καν Σ/Κ. Link to comment Share on other sites More sharing options...
Jaco Νοέμβριος 28, 2008 #10 Κοινοποίηση Νοέμβριος 28, 2008 E... στην ουσία είναι... αργότερα μόλις τελειώσω κάτι άλλο, θα δοκιμάσω με script από cmd να δω μήπως μπορεί να γίνει πιο σωστά, καθώς εκεί είναι καθαρά calls στο api χωρίς ενδιάμεσα runtimes και interfaces... είμαι περίεργος... Link to comment Share on other sites More sharing options...
Nephiλiμ Νοέμβριος 28, 2008 #11 Κοινοποίηση Νοέμβριος 28, 2008 ρε τι AMD fusion λετε...:clap: Link to comment Share on other sites More sharing options...
Jaco Νοέμβριος 29, 2008 #12 Κοινοποίηση Νοέμβριος 29, 2008 Λοιπόν τελικά έκανα δοκιμές και με scripting από το command prompt των windows και το βλέπω πολύ πιο λειτουργικό και ασφαλές να γίνεται ο έλεγχος των services από εκεί, ειδικά αν μιλάμε για υπολογιστές εταιριών κλπ οπότε έγραψα ένα script-άκη που θα λατρέψουν οι admin... Οδηγείες...: απλά δημιουργήστε ένα αρχείο .txt και κάνετε copy-paste το παρακάτω script και στην συνέχεια μετονομάζετε το αρχείο σε sevices.cmd ή όπως αλλιώς θέλετε αρκεί να έχει κατάληξη (.cmd ή .bat)... Αν θέλετε μπορείτε να το κατεβάσετε και από εδώ... @echo offREM Title : Startup Services ManagerREM author : jacoREM version : 0.1REM revision : 29.11.2008REM instructions :REM Create a file named services.txt and place it in the same folder with jssm.cmd (for example in 'C:\Documents and Settings\Admin\Start Menu\Programs\Startup')/REM In this file write all the services you want to handle on startup with the following format...:REM Syntax:REM SERVICE_NAME SERVICE_START_TYPE SERVICE_STATEREM where,REM SERVICE_NAME : the real name of the service and not the display name, for example WZCSVC for Wireless Zero Configurator...REM TIP: use cmd to find services' real name like this ('C:\sc query') which lists all services and use DISPLAY_NAMEREMREM SERVICE_START_TYPE : this is the startup status of the service use only one from the following...:REM {AUTO, DEMAND, DISABLED}REM AUTO : automatic activationREM DEMAND : manual activationREM DISABLED : disable the serviceREMREM SERVICE_STATE : select the service's startup state... Can be only one of the following...:REM {START, STOP}REMREM Examples:REM ALERTER DEMAND STOPREM WZCSVC AUTO STARTREM THEMES DISABLED STOPsetlocal ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION::Open file 'services.txt'clsecho ^=^= Startup Services Manager v.0.1 ^=^=echo author: Jacoecho revision: 29.11.2008echo ---------echo Starting Script... & DATE /T & TIME /Techo ---------for /f "tokens=*" %%T in ( 'type services.txt' ) do ( call :HandleService %%T )echo ---------echo Finished Script...TIME /Techo ---------endlocalgoto :EOF:HandleServicesetlocalset svr_name=%1set svr_start_type=%2set svr_state=%3set /a HandleService=-1echo Setting %svr_name% as %svr_start_type% and %svr_state%::Check if service existscall :GetCurrStartType %svr_name%::echo GetCurrStartType: %GetCurrStartType%call :GetWantedStartType %svr_start_type%::echo GetWantedStartType: %GetWantedStartType%if not %GetCurrStartType%==%GetWantedStartType% ( call :SetStartType %svr_name% %svr_start_type% %GetWantedStartType% set /a HandleService=1)if %HandleService%==1 ( if %svr_state%==START ( call :StartService %svr_name% ) else ( call :StopService %svr_name% ))endlocal & set /a HandleService=%HandleService%goto :EOF:StartServicesetlocalcall :GetServiceState %1if Not %GetServiceState%==START (echo Starting service...sc start %1 > NUL 2>&1)endlocalgoto :EOF:StopServicesetlocalcall :GetServiceState %1if Not %GetServiceState%==STOP (echo Stopping service...sc stop %1 > NUL 2>&1)endlocalgoto :EOF:GetServiceStatesetlocal & set tmp_query=sc query %1for /f "delims=: tokens=1-2" %%c in ('%tmp_query% ^| find "STATE"') do set query_result=%%dset GetServiceState=%query_result:~1,2%if %GetServiceState%==0 ( set GetServiceState=STOP )if %GetServiceState%==4 ( set GetServiceState=START )endlocal & set GetServiceState=%GetServiceState%goto :EOF:GetWantedStartTypesetlocal & set /a type=%1if %1==AUTO ( set /a GetWantedStartType=2 )if %1==DEMAND ( set /a GetWantedStartType=3 )if %1==DISABLED ( set /a GetWantedStartType=4 )endlocal & set /a GetWantedStartType=%GetWantedStartType%goto :EOF:GetCurrStartTypesetlocal & set tmp_query=sc qc %1for /f "delims=: tokens=1-2" %%c in ('%tmp_query% ^| find "START_TYPE"') do set start_type=%%dset /a GetCurrStartType=%start_type:~1,2%endlocal & set /a GetCurrStartType=%GetCurrStartType%goto :EOF:SetStartTypesetlocal & set tmp_query=sc config %1 start= %2echo %tmp_query%%tmp_query%call :WaitForTypeToBeSet %1 %3endlocalgoto :EOF:WaitForTypeToBeSet %1 %2setlocalset /a wait_counter=0:WaitLoopcall :GetCurrStartType %1call :sleep_sec 1set /a wait_counter+=1::echo Wait %GetCurrStartType% / %2if Not %GetCurrStartType%==%2 ( if %wait_counter%==30 ( echo Skipping after 30 secs ) else ( echo Looping goto WaitLoop )) else ( set /a WaitForTypeToBeSet=1 )endlocal & set /a WaitForTypeToBeSet=%WaitForTypeToBeSet%goto :EOF:Sleep_secping -n %1 127.0.0.1 > NUL 2>&1goto :EOF Στην συνέχεια δημιουργείτε (απαραίτητα) ένα αρχείο το οποίο λέγεται services.txt μέσα στο οποίο γράφετε τα services που θέλετε να παραμετροποιήσετε μαζί με τις παραμέτρους με την παρακάτω σύνταξη...: SERVICE_NAME SERVICE_START_TYPE SERVICE_STATE όπου SERVICE_NAME : Το όνομα του service, όχι όπως φαίνεται μέσα στο services.msc αλλά το πραγματικό όνομα, το οποίο μπορείτε να το δείτε τρέχοντας την εντολη (sc query | more) από το cmd... SERVICE_START_TYPE : AUTO ή DEMAND ή DISABLED, που καθορίζει αν είναι ενεργοποιημένο το service και αν ναι με ποιόν τρόπο... το DEMAND είναι το αντίστοιχο του MANUAL που λέει στο services.msc SERVICE_STATE: START ή STOP, ξεκάθαρο νομίζω Παράδειγμα...: services.txt ALG DISABLED STOPALERTER DEMAND STOPALERTER AUTO STARTALERTER DISABLED STOP Οπότε έχοντας τα δυο αυτά αρχεία (services.cmd, services.txt) στον ίδιο φάκελο τρέχετε το services.cmd και κάνει μόνο του τα υπόλοιπα, επίσης μπορεί να μπεί στο ('C:\Documents and Settings\Admin\Start Menu\Programs\Startup') ή να τρέχει πριν από κάποιο συγκεκριμένο πρόγραμμα, απλά προσθέτοντας μια γραμμή στο script... ορίστε και ένα output...: == Startup Services Manager v.0.1 ==author: Jacorevision: 29.11.2008---------Starting Script... 29/11/2008 09:23 πμ---------Setting ALG as DISABLED and STOPSetting ALERTER as DEMAND and STOPsc config ALERTER start= DEMAND[SC] ChangeServiceConfig SUCCESSStopping service...Setting ALERTER as AUTO and STARTsc config ALERTER start= AUTO[SC] ChangeServiceConfig SUCCESSStarting service...Setting ALERTER as DISABLED and STOPsc config ALERTER start= DISABLED[SC] ChangeServiceConfig SUCCESSStopping service...---------Finished Script...09:23 πμ--------- TIPS: Αν την ώρα που τρέχετε το script έχετε ανοικτό το services.msc πρέπει να κάνετε δεξί κλικ -> refresh για να δείτε τις αλλαγές που έγιναν από το script Τα dependencies θα πρέπει να τα ξέρετε εσείς και να τα λάβετε υπόψη και όταν πχ τερματίζετε ένα service το οποίο έχει dependency ένα άλλο τότε θα πρέπει να τα τερματίζετε με την σειρά που πρέπει... τα dependencies τα βλέπετε εύκολα από το cmd δίνοντας (sc qc SERVICE_NAME)... ίσως κάποια μέρα ενσωματώσω στο script να κάνει αυτόματο έλεγχο στα dependencies και να τα κλείνει/ανοίγει μόνο του, αλλά είναι λίγο περιττό καθώς είναι υπόθεση 1λεπτού να γίνει μέσα στο services.txt... Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.