Пример #1
0
        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);
            }
        }