internal static PerformanceCounterLib GetPerformanceCounterLib(string machineName, CultureInfo culture) { SharedUtils.CheckEnvironment(); string lcid = culture.LCID.ToString("X3", CultureInfo.InvariantCulture); if (machineName.CompareTo(".") == 0) { machineName = ComputerName.ToLower(CultureInfo.InvariantCulture); } else { machineName = machineName.ToLower(CultureInfo.InvariantCulture); } if (libraryTable == null) { lock (InternalSyncObject) { if (libraryTable == null) { libraryTable = new Hashtable(); } } } string key = machineName + ":" + lcid; if (libraryTable.Contains(key)) { return((PerformanceCounterLib)libraryTable[key]); } PerformanceCounterLib lib = new PerformanceCounterLib(machineName, lcid); libraryTable[key] = lib; return(lib); }
public static bool Exists(string logName, string machineName) { bool flag; if (!SyntaxCheck.CheckMachineName(machineName)) { throw new ArgumentException(SR.GetString("InvalidParameterFormat", new object[] { "machineName" })); } new EventLogPermission(EventLogPermissionAccess.Administer, machineName).Demand(); if ((logName == null) || (logName.Length == 0)) { return(false); } SharedUtils.CheckEnvironment(); _UnsafeGetAssertPermSet().Assert(); RegistryKey eventLogRegKey = null; RegistryKey key2 = null; try { eventLogRegKey = GetEventLogRegKey(machineName, false); if (eventLogRegKey == null) { return(false); } key2 = eventLogRegKey.OpenSubKey(logName, false); flag = key2 != null; } finally { if (eventLogRegKey != null) { eventLogRegKey.Close(); } if (key2 != null) { key2.Close(); } CodeAccessPermission.RevertAssert(); } return(flag); }
public static EventLog[] GetEventLogs(string machineName) { if (!SyntaxCheck.CheckMachineName(machineName)) { throw new ArgumentException(SR.GetString("InvalidParameter", new object[] { "machineName", machineName })); } new EventLogPermission(EventLogPermissionAccess.Administer, machineName).Demand(); SharedUtils.CheckEnvironment(); string[] subKeyNames = new string[0]; _UnsafeGetAssertPermSet().Assert(); RegistryKey eventLogRegKey = null; try { eventLogRegKey = GetEventLogRegKey(machineName, false); if (eventLogRegKey == null) { throw new InvalidOperationException(SR.GetString("RegKeyMissingShort", new object[] { @"SYSTEM\CurrentControlSet\Services\EventLog", machineName })); } subKeyNames = eventLogRegKey.GetSubKeyNames(); } finally { if (eventLogRegKey != null) { eventLogRegKey.Close(); } CodeAccessPermission.RevertAssert(); } EventLog[] logArray = new EventLog[subKeyNames.Length]; for (int i = 0; i < subKeyNames.Length; i++) { logArray[i] = new EventLog(subKeyNames[i], machineName); } return(logArray); }
private static RegistryKey FindSourceRegistration(string source, string machineName, bool readOnly, bool wantToCreate) { if ((source != null) && (source.Length != 0)) { SharedUtils.CheckEnvironment(); _UnsafeGetAssertPermSet().Assert(); RegistryKey eventLogRegKey = null; try { eventLogRegKey = GetEventLogRegKey(machineName, !readOnly); if (eventLogRegKey == null) { return(null); } StringBuilder builder = null; string[] subKeyNames = eventLogRegKey.GetSubKeyNames(); for (int i = 0; i < subKeyNames.Length; i++) { RegistryKey key2 = null; try { RegistryKey key3 = eventLogRegKey.OpenSubKey(subKeyNames[i], !readOnly); if (key3 != null) { key2 = key3.OpenSubKey(source, !readOnly); if (key2 != null) { return(key3); } } } catch (UnauthorizedAccessException) { if (builder == null) { builder = new StringBuilder(subKeyNames[i]); } else { builder.Append(", "); builder.Append(subKeyNames[i]); } } catch (SecurityException) { if (builder == null) { builder = new StringBuilder(subKeyNames[i]); } else { builder.Append(", "); builder.Append(subKeyNames[i]); } } finally { if (key2 != null) { key2.Close(); } } } if (builder != null) { throw new SecurityException(SR.GetString(wantToCreate ? "SomeLogsInaccessibleToCreate" : "SomeLogsInaccessible", new object[] { builder.ToString() })); } } finally { if (eventLogRegKey != null) { eventLogRegKey.Close(); } CodeAccessPermission.RevertAssert(); } } return(null); }
public static void DeleteEventSource(string source, string machineName) { if (!SyntaxCheck.CheckMachineName(machineName)) { throw new ArgumentException(SR.GetString("InvalidParameter", new object[] { "machineName", machineName })); } new EventLogPermission(EventLogPermissionAccess.Administer, machineName).Demand(); SharedUtils.CheckEnvironment(); _UnsafeGetAssertPermSet().Assert(); Mutex mutex = null; RuntimeHelpers.PrepareConstrainedRegions(); try { SharedUtils.EnterMutex("netfxeventlog.1.0", ref mutex); RegistryKey key = null; using (key = FindSourceRegistration(source, machineName, true)) { if (key == null) { if (machineName == null) { throw new ArgumentException(SR.GetString("LocalSourceNotRegistered", new object[] { source })); } throw new ArgumentException(SR.GetString("SourceNotRegistered", new object[] { source, machineName, @"HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog" })); } string name = key.Name; int num = name.LastIndexOf('\\'); if (string.Compare(name, num + 1, source, 0, name.Length - num, StringComparison.Ordinal) == 0) { throw new InvalidOperationException(SR.GetString("CannotDeleteEqualSource", new object[] { source })); } } try { key = FindSourceRegistration(source, machineName, false); key.DeleteSubKeyTree(source); if (!SkipRegPatch) { string[] strArray = (string[])key.GetValue("Sources"); ArrayList list = new ArrayList(strArray.Length - 1); for (int i = 0; i < strArray.Length; i++) { if (strArray[i] != source) { list.Add(strArray[i]); } } string[] array = new string[list.Count]; list.CopyTo(array); key.SetValue("Sources", array, RegistryValueKind.MultiString); } } finally { if (key != null) { key.Flush(); key.Close(); } CodeAccessPermission.RevertAssert(); } } finally { if (mutex != null) { mutex.ReleaseMutex(); } } }
public static void Delete(string logName, string machineName) { if (!SyntaxCheck.CheckMachineName(machineName)) { throw new ArgumentException(SR.GetString("InvalidParameterFormat", new object[] { "machineName" })); } if ((logName == null) || (logName.Length == 0)) { throw new ArgumentException(SR.GetString("NoLogName")); } if (!ValidLogName(logName, false)) { throw new InvalidOperationException(SR.GetString("BadLogName")); } new EventLogPermission(EventLogPermissionAccess.Administer, machineName).Demand(); SharedUtils.CheckEnvironment(); _UnsafeGetAssertPermSet().Assert(); RegistryKey eventLogRegKey = null; Mutex mutex = null; RuntimeHelpers.PrepareConstrainedRegions(); try { SharedUtils.EnterMutex("netfxeventlog.1.0", ref mutex); try { eventLogRegKey = GetEventLogRegKey(machineName, true); if (eventLogRegKey == null) { throw new InvalidOperationException(SR.GetString("RegKeyNoAccess", new object[] { @"HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog", machineName })); } using (RegistryKey key2 = eventLogRegKey.OpenSubKey(logName)) { if (key2 == null) { throw new InvalidOperationException(SR.GetString("MissingLog", new object[] { logName, machineName })); } EventLog log = new EventLog(logName, machineName); try { log.Clear(); } finally { log.Close(); } string path = null; try { path = (string)key2.GetValue("File"); } catch { } if (path != null) { try { File.Delete(path); } catch { } } } eventLogRegKey.DeleteSubKeyTree(logName); } finally { if (eventLogRegKey != null) { eventLogRegKey.Close(); } CodeAccessPermission.RevertAssert(); } } finally { if (mutex != null) { mutex.ReleaseMutex(); } } }
private unsafe void Initialize(int fileMappingSize) { string mappingName = null; SharedUtils.CheckEnvironment(); if (SharedUtils.CurrentEnvironment == SharedUtils.W2kEnvironment) { mappingName = "Global\\" + FileMappingName; } else { mappingName = FileMappingName; } IntPtr securityDescriptorPointer = IntPtr.Zero; try { // The sddl string consists of these parts: // D: it's a DACL // (A;; this is an allow ACE // FRFWGRGW;;; allow file read, file write, generic read and generic write // WD) granted to Everyone string sddlString = "D:(A;OICI;FRFWGRGW;;;WD)"; if (!UnsafeNativeMethods.ConvertStringSecurityDescriptorToSecurityDescriptor(sddlString, NativeMethods.SDDL_REVISION_1, out securityDescriptorPointer, IntPtr.Zero)) { throw new InvalidOperationException(SR.GetString(SR.SetSecurityDescriptorFailed)); } NativeMethods.SECURITY_ATTRIBUTES securityAttributes = new NativeMethods.SECURITY_ATTRIBUTES(); securityAttributes.lpSecurityDescriptor = securityDescriptorPointer; securityAttributes.bInheritHandle = false; fileMappingHandle = UnsafeNativeMethods.CreateFileMapping(new HandleRef(null, (IntPtr)(-1)), securityAttributes, NativeMethods.PAGE_READWRITE, 0, fileMappingSize, mappingName); int error = Marshal.GetLastWin32Error(); if (fileMappingHandle == (IntPtr)0 && (error == NativeMethods.ERROR_ALREADY_EXISTS || error == NativeMethods.ERROR_ACCESS_DENIED)) { fileMappingHandle = UnsafeNativeMethods.OpenFileMapping(NativeMethods.FILE_MAP_WRITE, false, mappingName); } } finally { SafeNativeMethods.LocalFree(securityDescriptorPointer); } if (fileMappingHandle == (IntPtr)0) { throw new InvalidOperationException(SR.GetString(SR.CantCreateFileMapping)); } FileViewAddress = UnsafeNativeMethods.MapViewOfFile(new HandleRef(this, fileMappingHandle), NativeMethods.FILE_MAP_WRITE, 0, 0, 0); if (FileViewAddress == (IntPtr)0) { throw new InvalidOperationException(SR.GetString(SR.CantMapFileView)); } FileMappingSize = fileMappingSize; SafeNativeMethods.InterlockedCompareExchange(FileViewAddress, 4, 0); AppDomain.CurrentDomain.DomainUnload += new EventHandler(this.OnAppDomainUnload); }