Toon posts:

[c#] Windows service aanmaken

Pagina: 1
Acties:
  • 107 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Hey,

Ik ben een asp.net website aan het schrijven die servers op locatie kan monitoren. Hiervoor plaats ik op elke server een webservice en een daemon. Deze daemon is een windows application die door middel van de win32 query's hardware informatie opvraagt.

De webservices en monitoring applicaties zijn al gemaakt. Ik heb een applicatie (in c#) geschreven die de cd-rom, de processe, netwerkprinters, services, en hardwarefouten opvraagt en wegschrijft in een logfile. De webservice kan de logfile inlezen en doorsturen naar de applicatie.

Het probleem begint pas als ik deze applicatie als daemon wil laten draaien. Als ik de service die ik aangemaakt heb, wil laten runnen, wilt hij plots de cd-rom en de netwerkprinters niet meer controleren. Volgens mij heeft dit met user rights te maken. Ik heb geprobeerd om de service te laten draaien onder de system administrator account, maar dit biedt ook geen oplossing. Lukt dat bij jou wel? en zoja, kan je me ergens een tip geven hoe ik dit kan oplossen?


Mvg,

Wouter De Clercq

  • whoami
  • Registratie: December 2000
  • Laatst online: 00:54
Als het te maken heeft met user-rights, dan hoort dit probleem niet thuis in PRG, maar eerder in WOS bv. Echter, omdat er hier omtrent nog geen duidelijkheid voor bestaat, laat ik het topic voorlopig hier ff staan.

Het is ook niet de bedoeling om hier 2x hetzelfde topic aan te maken voor hetzelfde probleem (Windows service monitoring).

Verder geef je ook een beetje weinig info: 'hij wil de cdrom & de nw printers niet meer controleren'. Krijg je daar dan een fout / exception op ? Zoja, dewelke?
Hoe spreek je de CD rom & netwerkprinters aan ?

(welkom op GoT trouwens)

[ Voor 13% gewijzigd door whoami op 01-03-2007 11:21 ]

https://fgheysels.github.io/


Verwijderd

Topicstarter
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
System.Management.ManagementObjectSearcher searcher =
                new System.Management.ManagementObjectSearcher("Select * from Win32_Printer");

                foreach (System.Management.ManagementObject printer in searcher.Get())
                {
                
                    output += printer["DeviceID"].ToString() + ";";
                    output += printer["ExtendedDetectedErrorState"].ToString() + ";";         
                    output += printer["ExtendedPrinterStatus"].ToString() + "\n";

                }
                schrijfTextFile(output, "C:\\PRINTERS.txt");
            }

            catch (AccessViolationException)
            {

                output += ("Access Denied");
            }
            catch (Exception e)
            {
                output += e.StackTrace;
            }
                schrijfTextFile(output, "C:\\PRINTERS.txt");
        }


Dit is de code die ik gebruik om de printers, zowel lokaal als op het netwerk to bekijken. Deze code wordt perfect uitgevoerd als ik de applicatie laat runnen met deze output:

\\Desktop\Brother HL-2030 series;0;2
Escsrv\HP CLJ 3800 WIT PAPIER;5;1
Escsrv\HP Laserjet 4050 Series PCL 5e;0;2


Als ik deze applicatie laat runnen als daemon geeft hij niets weer(de file is dus leeg), maar geeft hij ook geen error van Access Denied of zo... Iemand enig idee?

  • CodeIT
  • Registratie: Juni 2002
  • Laatst online: 01-12 21:22

CodeIT

Code IT

Volgens mij draait een service niet in een user omgeving (bv Loal System Service draait al voor een login). Als je de service runt onder hetzelfde account als waar je mee test, krijg je dan ook een lege file?

Verwijderd

Topicstarter
ja dan krijg ik ook een lege file