internal byte[] GetData(string item) { int num = 0x11; int millisecondsTimeout = 0; int error = 0; new RegistryPermission(PermissionState.Unrestricted).Assert(); while (num > 0) { try { return((byte[])this.perfDataKey.GetValue(item)); } catch (IOException exception) { error = Marshal.GetHRForException(exception); switch (error) { case 6: case 0x6ba: case 0x6be: this.Init(); break; case 0x15: case 0xa7: case 170: case 0x102: break; default: throw SharedUtils.CreateSafeWin32Exception(error); } num--; if (millisecondsTimeout == 0) { millisecondsTimeout = 10; } else { Thread.Sleep(millisecondsTimeout); millisecondsTimeout *= 2; } continue; } catch (InvalidCastException exception2) { throw new InvalidOperationException(SR.GetString("CounterDataCorrupt", new object[] { this.perfDataKey.ToString() }), exception2); } } throw SharedUtils.CreateSafeWin32Exception(error); }
private static void RegisterFiles(string arg0, bool unregister) { ProcessStartInfo startInfo = new ProcessStartInfo { UseShellExecute = false, CreateNoWindow = true, ErrorDialog = false, WindowStyle = ProcessWindowStyle.Hidden, WorkingDirectory = Environment.SystemDirectory }; if (unregister) { startInfo.FileName = Environment.SystemDirectory + @"\unlodctr.exe"; } else { startInfo.FileName = Environment.SystemDirectory + @"\lodctr.exe"; } int error = 0; new SecurityPermission(SecurityPermissionFlag.UnmanagedCode).Assert(); try { startInfo.Arguments = "\"" + arg0 + "\""; Process process = Process.Start(startInfo); process.WaitForExit(); error = process.ExitCode; } finally { CodeAccessPermission.RevertAssert(); } if (error == 5) { throw new UnauthorizedAccessException(SR.GetString("CantChangeCategoryRegistration", new object[] { arg0 })); } if (unregister && (error == 2)) { error = 0; } if (error != 0) { throw SharedUtils.CreateSafeWin32Exception(error); } }