| 
| Autor | Beitrag |  
| Orothred 
          Beiträge: 86
 
 
 C# (VS 2005)
 
 | 
Verfasst: Mi 12.09.07 15:45 
 
Ich habe einen Dienst geschrieben und fehlerfrei kompiliert. Bei der Installation des Dienstes bekomme ich allerdings immer eine Fehlermeldung. Das liefert mir die Konsole:
 												| 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:
 26:
 27:
 28:
 29:
 30:
 31:
 32:
 33:
 34:
 35:
 36:
 37:
 38:
 39:
 40:
 41:
 42:
 43:
 44:
 45:
 46:
 47:
 48:
 49:
 50:
 51:
 52:
 
 | Y:\>C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\InstallUtil.exe C:\Projekte\Test\ListenService\ListenService.exe
 Microsoft (R) .NET Framework-Installationsprogramm, Version 2.0.50727.832
 Copyright (c) Microsoft Corporation. Alle Rechte vorbehalten.
 
 
 Eine transaktive Installation wird ausgeführt.
 
 Die Installationsphase wird gestartet.
 Die Protokolldatei enthält den Fortschritt der Assembly C:\Projekte\Test\ListenS
 ervice\ListenService.exe.
 Die Datei befindet sich in C:\Projekte\Test\ListenService\ListenService.InstallL
 og.
 Assembly C:\Projekte\Test\ListenService\ListenService.exe wird installiert.
 Betroffene Parameter:
 logtoconsole =
 assemblypath = C:\Projekte\Test\ListenService\ListenService.exe
 logfile = C:\Projekte\Test\ListenService\ListenService.InstallLog
 Dienst ListenService wird installiert...
 Die EventLog-Quelle ListenService im Protokoll Application wird erstellt...
 
 Während der Installationsphase ist eine Ausnahme aufgetreten.
 System.Security.SecurityException: Die Quelle wurde nicht gefunden, aber einige
 oder alle Ereignisprotokolle konnten nicht durchsucht werden. Protokolle, auf di
 e kein Zugriff möglich war: Security.
 
 Die Rollbackphase der Installation wird gestartet.
 Die Protokolldatei enthält den Fortschritt der Assembly C:\Projekte\Test\ListenS
 ervice\ListenService.exe.
 Die Datei befindet sich in C:\Projekte\Test\ListenService\ListenService.InstallL
 og.
 Assembly C:\Projekte\Test\ListenService\ListenService.exe wird zurückgesetzt.
 Betroffene Parameter:
 logtoconsole =
 assemblypath = C:\Projekte\Test\ListenService\ListenService.exe
 logfile = C:\Projekte\Test\ListenService\ListenService.InstallLog
 Der vorherige Zustand des Ereignisprotokolls für die Quelle ListenService wird w
 iederhergestellt.
 Während der Rollbackphase des Installers System.Diagnostics.EventLogInstaller is
 t eine Ausnahme aufgetreten.
 System.Security.SecurityException: Die Quelle wurde nicht gefunden, aber einige
 oder alle Ereignisprotokolle konnten nicht durchsucht werden. Protokolle, auf di
 e kein Zugriff möglich war: Security.
 Während der Rollbackphase der Installation ist eine Ausnahme aufgetreten. Diese
 Ausnahme wird ignoriert, und der Rollback wird fortgesetzt. Der ursprüngliche Zu
 stand des Computers wird jedoch möglicherweise nicht vollständig wiederhergestel
 lt, nachdem der Rollback beendet ist.
 
 Die Rollbackphase wurde erfolgreich abgeschlossen.
 
 Die transaktive Installation ist abgeschlossen.
 Fehler bei der Installation, und der Rollback wurde ausgeführt.
 |  Wie kann ich den Fehler beheben?Moderiert von  Christian S.: Topic aus C# - Die Sprache verschoben am Mi 12.09.2007 um 16:56 |  |  |  
| Chryzler 
          Beiträge: 1097
 Erhaltene Danke: 2
 
 
 
 
 | 
Verfasst: Mi 12.09.07 18:49 
 
Der Fehler heißt meines Wissens nach, dass du nicht auf den Ereignisreport Sicherheit zugreifen kannst. Überprüf mal, ob du Admin bist, nur Admins dürfen so weit ich weiß Dienste installieren. Du kannst ja auch mal eventvwr.msc öffnen und sehen, ob du damit auf den Ereignisreport zugreifen kannst. |  |  |  
| Orothred  
          Beiträge: 86
 
 
 C# (VS 2005)
 
 | 
Verfasst: Do 13.09.07 06:58 
 
das problem hab ich mittlerweile gelöst, es lag daran, das ich keine lokalen adminrechte hatte (firmen-pc).
 der dienst läuft jetzt. es ist ein dienst, der veränderungen an dateien im laufwerk c: bemerken soll und in einer .log datei abspeichern soll. die log-datei wird zwar erstellt, aber es wird nichts hineingeschrieben. woran kann das liegen?
 das ist der gesamte code des dienstes:
 			Moderiert von									| 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:
 26:
 27:
 28:
 29:
 30:
 31:
 32:
 33:
 34:
 35:
 36:
 37:
 38:
 39:
 40:
 41:
 42:
 43:
 44:
 45:
 46:
 47:
 48:
 49:
 50:
 51:
 52:
 53:
 54:
 55:
 56:
 57:
 58:
 59:
 60:
 61:
 62:
 63:
 64:
 65:
 66:
 67:
 68:
 69:
 70:
 71:
 72:
 73:
 74:
 75:
 76:
 77:
 78:
 79:
 80:
 81:
 82:
 83:
 84:
 85:
 86:
 87:
 88:
 89:
 90:
 91:
 92:
 93:
 94:
 95:
 96:
 97:
 98:
 99:
 100:
 101:
 102:
 103:
 104:
 105:
 106:
 107:
 108:
 109:
 110:
 111:
 112:
 113:
 114:
 115:
 116:
 117:
 118:
 119:
 120:
 121:
 122:
 123:
 124:
 125:
 126:
 127:
 128:
 129:
 130:
 131:
 132:
 133:
 134:
 135:
 136:
 137:
 138:
 139:
 140:
 141:
 142:
 143:
 144:
 145:
 146:
 147:
 148:
 149:
 150:
 151:
 152:
 153:
 154:
 155:
 156:
 157:
 158:
 159:
 160:
 161:
 162:
 163:
 164:
 165:
 166:
 167:
 168:
 169:
 170:
 171:
 172:
 173:
 174:
 175:
 176:
 177:
 178:
 179:
 180:
 181:
 182:
 183:
 184:
 185:
 186:
 187:
 188:
 
 | using System;using System.Collections.Generic;
 using System.ComponentModel;
 using System.Data;
 using System.Diagnostics;
 using System.ServiceProcess;
 using System.Text;
 using System.IO;
 using System.Threading;
 using System.Collections.Specialized;
 using System.Reflection;
 
 namespace FileWatchService
 {
 public partial class Service1 : ServiceBase
 {
 private Thread thread;
 private string path = "";
 
 
 public Service1()
 {
 InitializeComponent();
 }
 
 protected override void OnStart(string[] args)
 {
 if (args.Length != 0)
 this.path = args[0];
 Worker worker = new Worker(this.path);
 thread = new Thread(new ThreadStart(worker.StartWorker));
 thread.Start();
 this.EventLog.WriteEntry("FileWatchService wurde erfolgreich gestartet");
 }
 
 protected override void OnStop()
 {
 thread.Abort();
 thread = null;
 this.EventLog.WriteEntry("FileWatchService wurde beendet");
 }
 
 protected override void OnPause()
 {
 thread.Suspend();
 this.EventLog.WriteEntry("FileWatchService wurde angehalten");
 }
 
 protected override void OnContinue()
 {
 thread.Resume();
 this.EventLog.WriteEntry("FileWatchService wurde fortgesetzt");
 }
 }
 
 public class Worker
 {
 private string protocolFile = "C:\\Projekte\\FileWatchSystem\\FileWatchLog.log";
 private string path = "C:\\";
 
 public Worker(string path)
 {
 if (path != "")
 this.path = path;
 }
 
 public void StartWorker()
 {
 FileSystemWatcher fsw = new FileSystemWatcher(this.path);
 
 fsw.IncludeSubdirectories = true;
 
 fsw.EnableRaisingEvents = true;
 
 fsw.Changed += new FileSystemEventHandler(ChangeFile);
 fsw.Deleted += new FileSystemEventHandler(DeleteFile);
 fsw.Created += new FileSystemEventHandler(CreateFile);
 fsw.Renamed += new RenamedEventHandler(RenameFile);
 
 try
 {
 while (true)
 {
 fsw.WaitForChanged(WatcherChangeTypes.All);
 }
 }
 catch
 {
 }
 
 fsw.EnableRaisingEvents = false;
 }
 
 private void RenameFile(object sender, RenamedEventArgs e)
 {
 string entry = "[" + DateTime.Now.ToShortTimeString() + "] "
 + String.Format("Pfad: {0}; Datei umbenannt: von {1} nach {2}",
 Path.GetDirectoryName(e.FullPath), e.OldName, e.Name);
 WriteToLogFile(entry);
 }
 
 private void CreateFile(object sender, FileSystemEventArgs e)
 {
 string entry = "[" + DateTime.Now.ToShortTimeString() + "] "
 + String.Format("Pfad: {0}; Datei erstellt{1}",
 Path.GetDirectoryName(e.FullPath), e.Name);
 WriteToLogFile(entry);
 }
 
 private void DeleteFile(object sender, FileSystemEventArgs e)
 {
 string entry = "[" + DateTime.Now.ToShortTimeString() + "]"
 + String.Format("Pfad: {0}; Datei gelöscht: {1}",
 Path.GetDirectoryName(e.FullPath), e.Name);
 WriteToLogFile(entry);
 }
 
 private void ChangeFile(object sender, FileSystemEventArgs e)
 {
 string pathChanged = e.FullPath.ToLower();
 string pathProtocol = protocolFile.ToLower();
 
 if (pathChanged == pathProtocol)
 return;
 string entry = "[" + DateTime.Now.ToShortTimeString() + "] "
 + String.Format("Pfad: {0}; Datei geändert:{1}",
 Path.GetDirectoryName(e.FullPath), e.Name);
 WriteToLogFile(entry);
 }
 
 private StringCollection ReadFromLogFile()
 {
 StringCollection strCol = new StringCollection();
 StreamReader sr = new StreamReader(this.protocolFile);
 string line = "";
 int count = 1;
 
 while ((line = sr.ReadLine()) != null)
 {
 if (count == 999)
 break;
 strCol.Add(line);
 count++;
 }
 
 sr.Close();
 return strCol;
 }
 
 private void WriteToLogFile(string entry)
 {
 StringCollection changedEntriesCol;
 if (File.Exists(this.protocolFile))
 changedEntriesCol = ReadFromLogFile();
 else
 changedEntriesCol = new StringCollection();
 
 changedEntriesCol.Insert(0, entry);
 
 FileStream fs = new FileStream(this.protocolFile, FileMode.Create);
 StreamWriter sw = new StreamWriter(fs);
 
 foreach (string str in changedEntriesCol)
 sw.WriteLine(str);
 sw.Close();
 }
 }
 }
 |   Christian S.: Code- durch C#-Tags ersetzt |  |  |  
| Kha 
          Beiträge: 3803
 Erhaltene Danke: 176
 
 Arch Linux
 Python, C, C++ (vim)
 
 | 
Verfasst: Do 13.09.07 11:52 
 
Du musst jeden FileStream nach der Benutzung schließen, das machst du am Besten per using-Block. |  |  |  
| UGrohne 
          
  Beiträge: 5502
 Erhaltene Danke: 220
 
 Windows 8 , Server 2012
 D7 Pro, VS.NET 2012 (C#)
 
 | 
Verfasst: Do 13.09.07 13:13 
 
Hallo,
 bitte erstelle für jede deiner Fragen ein separates Topic, da die Diskussion mehrerer Fragen in einem Topic für gewöhnlich für Verwirrung und Durcheinander sorgt. Daher:
 *geschlossen* Viele Grüße,
 Uwe |  |  |  
| Dieses Thema ist gesperrt, Du kannst keine Beiträge editieren oder beantworten. 
 Das Thema wurde von einem Team-Mitglied geschlossen. Wenn du mit der Schließung des Themas nicht einverstanden bist, kontaktiere bitte das Team.
 
 |  |