GetHostsFileFullPath() 공개 정적인 메소드

Определяет путь к файлу Hosts...
public static GetHostsFileFullPath ( ) : string
리턴 string
예제 #1
0
        /// <summary>
        /// Метод, срабатывающий при возникновении события "загрузка формы".
        /// </summary>
        private void FrmHEd_Load(object sender, EventArgs e)
        {
            // Проверим используемую платформу...
            Platform = new CurrentPlatform();

            // Проверим наличие прав администратора. Если они отсутствуют - отключим функции сохранения...
            if (!(ProcessManager.IsCurrentUserAdmin()))
            {
                HEd_M_Save.Enabled = false; HEd_T_Save.Enabled = false; HEd_M_RestDef.Enabled = false; HEd_Table.ReadOnly = true; HEd_T_Cut.Enabled = false; HEd_T_Paste.Enabled = false; HEd_T_RemRw.Enabled = false;
            }

            // Укажем версию в заголовке главной формы...
            Text = String.Format(Text, PluginVersion);

            // Определим расположение файла Hosts...
            HostsFilePath = FileManager.GetHostsFileFullPath(Platform.OS);

            // Проверим существование файла...
            if (File.Exists(HostsFilePath))
            {
                // Запишем путь в статусную строку...
                HEd_St_Wrn.Text = HostsFilePath;

                // Считаем содержимое...
                try { ReadHostsToTable(HostsFilePath); } catch (Exception Ex) { CoreLib.HandleExceptionEx(String.Format(AppStrings.AHE_ExceptionDetected, HostsFilePath), PluginName, Ex.Message, Ex.Source, MessageBoxIcon.Warning); }
            }
            else
            {
                MessageBox.Show(String.Format(AppStrings.AHE_NoFileDetected, HostsFilePath), PluginName, MessageBoxButtons.OK, MessageBoxIcon.Warning);
                Close();
            }
        }
예제 #2
0
        /// <summary>
        /// Метод, работающий в отдельном потоке при запуске механизма создания
        /// отчёта.
        /// </summary>
        private void BwGen_DoWork(object sender, DoWorkEventArgs e)
        {
            // Сгенерируем путь для каталога с рапортами...
            string RepDir = Path.Combine(AppUserDir, "reports");

            // Проверим чтобы каталог для рапортов существовал...
            if (!Directory.Exists(RepDir))
            {
                // Не существует, поэтому создадим...
                Directory.CreateDirectory(RepDir);
            }

            // Генерируем пути к каталогам для вреенных файлов и создаём их...
            string TempDir = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString());
            string CrDt    = FileManager.DateTime2Unix(DateTime.Now);

            if (!Directory.Exists(TempDir))
            {
                Directory.CreateDirectory(TempDir);
            }

            // Генерируем именя файлов с полными путями...
            string RepName       = String.Format("report_{0}.{1}", CrDt, "txt");
            string ArchName      = Path.Combine(RepDir, Path.ChangeExtension(RepName, ".zip"));
            string HostsFile     = FileManager.GetHostsFileFullPath(CurrentPlatform.OSType.Windows);
            string FNameRep      = Path.Combine(TempDir, RepName);
            string FNameInternal = Path.Combine(AppUserDir, Properties.Resources.DebugLogFileName);
            string FNameFPSCfg   = Path.Combine(TempDir, String.Format("fpscfg_{0}.zip", CrDt));
            string FNamePing     = Path.Combine(TempDir, String.Format("ping_{0}.log", CrDt));
            string FNameTrace    = Path.Combine(TempDir, String.Format("traceroute_{0}.log", CrDt));
            string FNameIpConfig = Path.Combine(TempDir, String.Format("ipconfig_{0}.log", CrDt));
            string FNameRouting  = Path.Combine(TempDir, String.Format("routing_{0}.log", CrDt));
            string FNameNetStat  = Path.Combine(TempDir, String.Format("netstat_{0}.log", CrDt));
            string FNameDxDiag   = Path.Combine(TempDir, String.Format("dxdiag_{0}.log", CrDt));

            // Начинаем сборку отчёта...
            try
            {
                // Генерируем основной отчёт...
                try { ProcessManager.StartProcessAndWait("msinfo32.exe", String.Format("/report \"{0}\"", FNameRep)); } catch (Exception Ex) { CoreLib.WriteStringToLog(Ex.Message); }

                // Если пользователь вдруг отменил его создание, больше ничего не делаем...
                if (File.Exists(FNameRep))
                {
                    // Запускаем последовательность...
                    try { ProcessManager.StartProcessAndWait("dxdiag.exe", String.Format("/t {0}", FNameDxDiag)); } catch (Exception Ex) { CoreLib.WriteStringToLog(Ex.Message); } /* DxDiag неадекватно реагирует на кавычки в пути. */
                    try { if (SelectedGame.FPSConfigs.Count > 0)
                          {
                              FileManager.CompressFiles(SelectedGame.FPSConfigs, FNameFPSCfg);
                          }
                    } catch (Exception Ex) { CoreLib.WriteStringToLog(Ex.Message); }
                    try { ProcessManager.StartProcessAndWait("cmd.exe", String.Format("/C ping steampowered.com > \"{0}\"", FNamePing)); } catch (Exception Ex) { CoreLib.WriteStringToLog(Ex.Message); }
                    try { ProcessManager.StartProcessAndWait("cmd.exe", String.Format("/C tracert steampowered.com > \"{0}\"", FNameTrace)); } catch (Exception Ex) { CoreLib.WriteStringToLog(Ex.Message); }
                    try { ProcessManager.StartProcessAndWait("cmd.exe", String.Format("/C ipconfig /all > \"{0}\"", FNameIpConfig)); } catch (Exception Ex) { CoreLib.WriteStringToLog(Ex.Message); }
                    try { ProcessManager.StartProcessAndWait("cmd.exe", String.Format("/C netstat -a > \"{0}\"", FNameNetStat)); } catch (Exception Ex) { CoreLib.WriteStringToLog(Ex.Message); }
                    try { ProcessManager.StartProcessAndWait("cmd.exe", String.Format("/C route print > \"{0}\"", FNameRouting)); } catch (Exception Ex) { CoreLib.WriteStringToLog(Ex.Message); }

                    try
                    {
                        // Создаём Zip-архив...
                        using (ZipFile ZBkUp = new ZipFile(ArchName, Encoding.UTF8))
                        {
                            // Добавляем в архив созданный рапорт...
                            if (File.Exists(FNameRep))
                            {
                                ZBkUp.AddFile(FNameRep, "report");
                            }

                            // Добавляем в архив все конфиги выбранной игры...
                            if (Directory.Exists(SelectedGame.FullCfgPath))
                            {
                                ZBkUp.AddDirectory(SelectedGame.FullCfgPath, "configs");
                            }
                            if (SelectedGame.IsUsingVideoFile)
                            {
                                string GameVideo = SelectedGame.GetActualVideoFile(); if (File.Exists(GameVideo))
                                {
                                    ZBkUp.AddFile(GameVideo, "video");
                                }
                            }

                            // Добавляем в архив все краш-дампы и логи Steam...
                            if (Directory.Exists(Path.Combine(FullSteamPath, "dumps")))
                            {
                                ZBkUp.AddDirectory(Path.Combine(FullSteamPath, "dumps"), "dumps");
                            }
                            if (Directory.Exists(Path.Combine(FullSteamPath, "logs")))
                            {
                                ZBkUp.AddDirectory(Path.Combine(FullSteamPath, "logs"), "logs");
                            }

                            // Добавляем содержимое файла Hosts...
                            if (File.Exists(HostsFile))
                            {
                                ZBkUp.AddFile(HostsFile, "hosts");
                            }

                            // Добавляем в архив отчёты утилит ping, трассировки и т.д.
                            if (File.Exists(FNamePing))
                            {
                                ZBkUp.AddFile(FNamePing, "system");
                            }
                            if (File.Exists(FNameTrace))
                            {
                                ZBkUp.AddFile(FNameTrace, "system");
                            }
                            if (File.Exists(FNameIpConfig))
                            {
                                ZBkUp.AddFile(FNameIpConfig, "system");
                            }
                            if (File.Exists(FNameRouting))
                            {
                                ZBkUp.AddFile(FNameRouting, "system");
                            }
                            if (File.Exists(FNameNetStat))
                            {
                                ZBkUp.AddFile(FNameNetStat, "system");
                            }
                            if (File.Exists(FNameDxDiag))
                            {
                                ZBkUp.AddFile(FNameDxDiag, "system");
                            }
                            if (File.Exists(FNameFPSCfg))
                            {
                                ZBkUp.AddFile(FNameFPSCfg, "fps");
                            }

                            // Добавляем в архив журнал программы...
                            try { if (File.Exists(FNameInternal))
                                  {
                                      if (FileManager.GetFileSize(FNameInternal) > 0)
                                      {
                                          ZBkUp.AddFile(FNameInternal, "srcrep");
                                      }
                                  }
                            } catch (Exception Ex) { CoreLib.WriteStringToLog(Ex.Message); }

                            // Сохраняем архив...
                            ZBkUp.Save();
                        }

                        // Выводим сообщение об успешном создании отчёта...
                        MessageBox.Show(String.Format(AppStrings.RPB_ComprGen, Path.GetFileName(ArchName)), PluginName, MessageBoxButtons.OK, MessageBoxIcon.Information);

                        // Открываем каталог с отчётами в оболочке и выделяем созданный файл...
                        if (File.Exists(ArchName))
                        {
                            ProcessManager.OpenExplorer(ArchName, CurrentPlatform.OSType.Windows);
                        }
                    }
                    catch (Exception Ex)
                    {
                        CoreLib.HandleExceptionEx(AppStrings.PS_ArchFailed, Properties.Resources.AppName, Ex.Message, Ex.Source, MessageBoxIcon.Warning);
                    }
                }

                // Выполняем очистку...
                try
                {
                    // Удаляем не сжатый отчёт...
                    if (File.Exists(FNameRep))
                    {
                        File.Delete(FNameRep);
                    }

                    // Удаляем временный каталог...
                    if (Directory.Exists(TempDir))
                    {
                        Directory.Delete(TempDir, true);
                    }
                }
                catch (Exception Ex)
                {
                    CoreLib.WriteStringToLog(Ex.Message);
                }
            }
            catch (Exception Ex)
            {
                // Произошло исключение...
                CoreLib.HandleExceptionEx(AppStrings.RPB_GenException, PluginName, Ex.Message, Ex.Source, MessageBoxIcon.Warning);
            }
        }