Autor |
Beitrag |
Orothred
      
Beiträge: 86
C# (VS 2005)
|
Verfasst: Mi 12.09.07 16: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\Te st\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 19: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 07: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:
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(); } } } |
Moderiert von 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 12: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 14: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.
|
|