putStr $ map (x -> chr $ round $ 21/2 * x^3 - 92 * x^2 + 503/2 * x - 105) [1..4]
Verwijderd
GetUserName() of GetUserNameEx()
Zie:
Platform SDK Documentation/Windows API/Reference/Functions by Category
en dan de System Information section.
(Found in 4 seconds
)
Zie:
Platform SDK Documentation/Windows API/Reference/Functions by Category
en dan de System Information section.
(Found in 4 seconds
edit:
Een service draait onder een zekere user. Draai je die service onder bv "System" dan kun je zo bepalen of de current user van de current thread de SCM is of een interactieve user. Een service is in feite gewoon een executable die draait in een andere context dan de ingelogde user, dus niet een 'speciale', maar een 'andere'. Een commandline parameter voor je service zou ook nog kunenn
Een service draait onder een zekere user. Draai je die service onder bv "System" dan kun je zo bepalen of de current user van de current thread de SCM is of een interactieve user. Een service is in feite gewoon een executable die draait in een andere context dan de ingelogde user, dus niet een 'speciale', maar een 'andere'. Een commandline parameter voor je service zou ook nog kunenn
GetUserName() 
Ik snap wat je bedoeld Otis (je "edit" is overbodig, maar toch bedankt), maar dat gaat niet werken -> zie commentaar beneden.
Ik snap wat je bedoeld Otis (je "edit" is overbodig, maar toch bedankt), maar dat gaat niet werken -> zie commentaar beneden.
putStr $ map (x -> chr $ round $ 21/2 * x^3 - 92 * x^2 + 503/2 * x - 105) [1..4]
Verwijderd
Geen idee. Ik denk dat win32 intern wat structures moet vullen met gegevens plus dat de service starter process wacht op signals van het process dat hij klaar is met initialiseren. Het hangt van de service af hoor. mercury mailserver die ik met een firedaemon 'service runner' start is binnen een seconde op, IIS duurt eeuwen. 
Ik weet niet hoe jij je service initialiseert, maar als je bv je initialisatie in een workerthread start en de main thread accuut laat retourneren is je service veel sneller opgestart.
Ik weet niet hoe jij je service initialiseert, maar als je bv je initialisatie in een workerthread start en de main thread accuut laat retourneren is je service veel sneller opgestart.
Voor stoppen heb ik een aparte thread*, voor starten niet. Voor het starten worden alleen wat memory allocaties gedaan, daarna wordt de hoofdthread gestart en vervolgens gerapporteerd dat de service gestart is.
* de eerste 10 seconde vraagt deze netjes aan de runnende thread of deze wil stoppen, daarna 5 seconden lang wat aggresiever door alle synchronisatie objecten op signalled te zetten en als 'ie daarna nog niet afgesloten is dan worden de threads bruut gekilled
* de eerste 10 seconde vraagt deze netjes aan de runnende thread of deze wil stoppen, daarna 5 seconden lang wat aggresiever door alle synchronisatie objecten op signalled te zetten en als 'ie daarna nog niet afgesloten is dan worden de threads bruut gekilled
putStr $ map (x -> chr $ round $ 21/2 * x^3 - 92 * x^2 + 503/2 * x - 105) [1..4]
Om weer terug te komen bij mijn oorspronkelijke vraag:
Een functie als GetUserName(Ex) gaat niet werken, want het is niet voldoende om naar je eigen security context te kijken of je door de SCM wordt aangeroepen, aangezien de user waaronder je het programma runt als service wel eens dezelfde user kan zijn die het programma via de explorer, cmdline of snelkoppeling start. Nu zou je kunnen zeggen dat je dan maar een andere gebruiker moet gebruiken/aanmaken om het programma als service te runnen (daar kan je nog een hele discussie over houden maar dat heeft niets met P&W te maken), maar in dat geval had ik net zo goed een commandline optie kunnen gebruiker (wat ik dus al deed) en zou deze vraag overbodig zijn. Dus de vraag is iets minder triviaal dan je dacht
Waar ik op doelde is niet zozeer de security context van het eigen programma, maar de "context" van het process (zoals bijvoorbeeld de naam van de executable of misschien andere eigenschappen waarmee je de SCM kan onderscheiden) dat het programma aanroept. Ik weet n.m.l. niet of je daar informatie kan over opvragen?
Ik kan me namelijk conceptueel voorstellen dat de SCM een (non-blocking!) CreateProcess doet (en vervolgens gaat wachten op een of andere message ofzo). Maar als je met een non-blocking CreateProcess een process start, dan hoeft vanuit dat process vandaan het aanroepde process niet meer te bestaan...
Iemand commentaar, ideeën of een oplossing?
Een functie als GetUserName(Ex) gaat niet werken, want het is niet voldoende om naar je eigen security context te kijken of je door de SCM wordt aangeroepen, aangezien de user waaronder je het programma runt als service wel eens dezelfde user kan zijn die het programma via de explorer, cmdline of snelkoppeling start. Nu zou je kunnen zeggen dat je dan maar een andere gebruiker moet gebruiken/aanmaken om het programma als service te runnen (daar kan je nog een hele discussie over houden maar dat heeft niets met P&W te maken), maar in dat geval had ik net zo goed een commandline optie kunnen gebruiker (wat ik dus al deed) en zou deze vraag overbodig zijn. Dus de vraag is iets minder triviaal dan je dacht
Waar ik op doelde is niet zozeer de security context van het eigen programma, maar de "context" van het process (zoals bijvoorbeeld de naam van de executable of misschien andere eigenschappen waarmee je de SCM kan onderscheiden) dat het programma aanroept. Ik weet n.m.l. niet of je daar informatie kan over opvragen?
Ik kan me namelijk conceptueel voorstellen dat de SCM een (non-blocking!) CreateProcess doet (en vervolgens gaat wachten op een of andere message ofzo). Maar als je met een non-blocking CreateProcess een process start, dan hoeft vanuit dat process vandaan het aanroepde process niet meer te bestaan...
Iemand commentaar, ideeën of een oplossing?
putStr $ map (x -> chr $ round $ 21/2 * x^3 - 92 * x^2 + 503/2 * x - 105) [1..4]
Pagina: 1