что такое расположение имени файла и расположение этого процесса
Пути к файлам
Казалось бы — что может быть проще, чем работа с файлами в C++. Но отдельные личности поражают своей находчивостью в поиске наихудшего подхода.
Не стоит делать так:
std::string filepath(«C:\\тест»);
std::ofstream file(filepath.c_str());
Если кратко, то использование не ASCII символов в строковых константах char может привести к печальным последствиям. Я уже обсуждал этот вопрос в посте о кодировках. В данном случае название файла напрямую зависит от кодировки исходника и если кто-то напишет подобное в utf-8, в windows-xp можно получить файл с запрещенными символами, с которым невозможно будет ничего сделать. Можно не использовать не ASCII. Но вы же не можете запретить это пользователю (потоку или БД из которого получен путь). Это же дискриминация по национальному признаку! Срочно исправляемся:
std::wstring filepath= L»C:\тест»
std::ofstream file(filepath.c_str());
Несведущие в стандарте пользователи Visual Studio могут успокоиться, пока нужда не заставит сменить компилятор (точнее STL). И тут начинается…
— «дурацкий gcc» или «дурацкий stlport» не содержит конструктор ofstream::ofstream(wchar_t*)
Дело в том, что текущий стандарт и не предполагает его наличия (не трогаем пока C++0x). Это в чистом виде энтузиазм мелкомягких.
Что же делать?
С третьим вариантом все ясно, с первым тоже ничего сложного:
А вот по поводу второго у тех, кто не учил матчасть, могут возникнуть проблемы.
Пользуемся std::locale
Отступление.
Огорчу пользователей mingw: вам придется использовать стороннюю реализацию STL (к примеру stlport) из-за отсутствия в родной правильной поддержки локализации. А точнее, функция std::locale(«») всегда возвращает std::locale(«C»), что бы там у вас не стояло. Тот же stlport лишен подобного недостатка. О том как слепить связку mingw+stlport+boost я отписал тут.
Все что нам нужно сделать это следовать простым правилам — с не ASCII работаем в «расширенном» виде. То есть, читаем путь в std::wstring, используя соответствующим образом локализованный поток, а при использовании, сужаем по пользовательской локализации. Эта идея основана на том, что раз пользователь правильно видит символы своего языка в консоли, то его пользовательская локализация знает в какую кодировку надо сузить широкую строку, чтобы правильно интерпретировать путь. Итак, пример. Допустим у нас есть файл в кодировке cp866, содержащий путь. Нам необходимо создать файл по этому пути. Что мы делаем:
Фасеты можно взять на git-hub.
SUMMARY
Если вы используете путь из argv — можете смело с ним работать (пользователь знает что делает). Из «внешней среды» путь получайте с помощью правильно локализованного потока как широкую строку и сужайте ее с помощью пользовательской локализации.
С вопросами можно обращаться:
0. К стандарту
1. К книге Страуструпа (3-е специальное издание, приложение)
2. К документации по mingw.
3. К документации по boost.
4. К посту о фасетах и кодировках.
UPD: Ну и как правильно заметили Gorthauer87,Migun и naryl в комментариях, обратные слеши и платформо-специфичные пути тоже плохая идея.
Знайте путь каждого запущенного процесса в Диспетчере Задач
Диспетчер задач является инструментом, который позволяет иметь информацию о процессах или задачах, которые выполняются на нашем компьютере в любое время. Это группируется по вкладкам, в которых вы можете видеть определенную информацию о каждом из запущенных процессов, однако во многих случаях трудно понять, что представляет собой каждый из процессов и каков путь их установки. Я покажу вам, как можно узнать путь каждого процесса в диспетчере задач Windows.
Первое, что нам нужно сделать, это открыть диспетчер задач. Для этого просто нажмите комбинацию клавиш Ctrl + Shift + Escape или нажмите Ctrl + Alt + Delete, затем нажмите «Диспетчер задач». Как только он откроется, у нас есть несколько способов узнать путь процесса запущенного на компьютере или ноутбуке.
Показать пути всех процессов в Диспетчере Задач
1. Способ. Разберем наиболее дедовский способ. Узнаем путь индивидуально для одного процесса.
2. Способ. Мы можем еще создать отдельный столбец с указанием пути к местонахождению файла в самом диспетчере задач, что на мой взгляд является более рентабельнее и практичным. Это полезно тем, что к примеру в «диспетчере задач» во вкладке «Автозагрузка«, нет возможности посмотреть индивидуально путь, как описывал выше. По этому и разберем второй способ что делать с такими процессами когда в меню нельзя открыть расположение файла.
Как найти местоположение любого файла в Windows и Mac?
В Интернете доступны миллионы статей по устранению неполадок, которые помогут решить проблемы с вашим компьютером. В большинстве случаев при чтении этих статей вам будет предложено открыть определенный файл, папку или приложение для устранения проблемы. Как правило, легко найти местоположение исходного файла в Windows и Mac. Однако это не всегда так, особенно для ярлыков приложений и системных приложений. Если вы не можете найти местоположение файла, вот как это можно сделать в Windows и Mac.
Поиск местоположения исходного файла
Процесс очень прост как в Windows, так и в Mac. Однако это зависит от типа файла, в котором вы хотите найти исходное местоположение.
Получить расположение файла в Windows 10
Мы объясним все возможные сценарии на компьютере с Windows 10.
1. Поиск местоположения с помощью свойств файла
Многие пользователи хранят ярлыки приложений на своем рабочем столе. Кроме того, системные приложения, такие как браузер Edge, будут иметь ярлык по умолчанию на рабочем столе. Давайте займемся поиском местоположения приложения Chrome, для которого вы создали ярлыки на рабочем столе.
Это полезно, особенно если вы установили приложения на дисках, отличных от C :.
Статьи по Теме:
2. Поиск местоположения с помощью поиска в Windows 10
Альтернативный вариант получения местоположения исходного файла на компьютерах с Windows 10 — использовать окно поиска Windows или Cortana. Давайте рассмотрим пример поиска местоположения исходного файла браузера Edge по умолчанию.
Однако поле поиска работает по-разному для разных типов файлов. При поиске изображений Windows покажет параметры «Открыть расположение файла» и «Копировать полный путь».
Расположение файлов изображений
Кроме того, вы можете увидеть список «Лучшие приложения», щелкнув поле поиска. Отсюда вы также можете щелкнуть правой кнопкой мыши и открыть расположение файла.
3. Получить расположение файла в проводнике.
Приложение File Explorer покажет полный путь к файлу, который вы просматриваете в данный момент. В случае, если вы хотите скопировать местоположение в проводнике, просто щелкните адресную строку. Это покажет полный путь к файлу и нажмите «Control + C», чтобы скопировать местоположение в буфер обмена.
Получить расположение файла на Mac
Подобно Windows, Mac также предлагает различные методы поиска местоположения файла.
1. Определите местоположение с помощью Get Info
Щелкните файл, местоположение которого нужно найти, и нажмите сочетания клавиш «Command + I». Либо щелкните файл правой кнопкой мыши и выберите параметр «Получить информацию».
Откроется диалоговое окно свойств файла. Проверьте путь к файлу «Исходный» в разделе «Общие».
Исходное местоположение
2. Найдите расположение приложений в Dock.
Если вы хотите найти расположение файла приложения, доступного на вашей док-станции, щелкните его правой кнопкой мыши. Перейдите в «Параметры»> «Показать в Finder», чтобы открыть местоположение файла в Finder.
Найти местоположение из Finder
3. Откройте расположение файла в поиске Spotlight.
Последний вариант — получить местоположение файла с помощью поля поиска Spotlight. Нажмите «Command + Пробел», чтобы открыть поиск Spotlight, и введите имя файла или приложения. По умолчанию вы не увидите местоположение файла в результатах поиска Spotlight. Однако выберите файл и нажмите командную клавишу. Это покажет путь к файлу в строке состояния, как показано ниже. Вы можете удерживать командную клавишу и щелкнуть файл, чтобы открыть его в Finder.
Путь к файлу в поиске Spotlight
3 способа скопировать путь к файлу или папке
В этой инструкции я покажу, как скопировать полный путь к файлу в Windows 10. Иногда нам для поиска информации или работы других программ, необходимо скопировать путь расположения файла, папки или каталога. Чтобы найти определенный файл в иерархии каталогов, необходимо указать абсолютный путь к нему.
Как посмотреть путь к файлу?
Существует несколько способов просмотра и копирования пути к файлам и папкам. Самый простой из них, это использовать клавишу “Shift” ⇒
С помощью Shift
Например, путь к рабочему столу Windows 10 на моем компьютере имеет вид ⇒ C:\Users\Alex\Desktop, а к папке Temp ⇒ C:\Program Files (x86)\Temp
Через свойства папки или файла
Следующим способом удобно смотреть расположение папки или документа, но скопировать весь путь не получиться, так как последняя директория в пути не указывается.
Например путь к графическому изображению help.png
E:\Фотоматериалы и изображения\Иконки\help.png
будет выглядеть как ⇒
E:\Фотоматериалы и изображения\Иконки
Узнаем путь к файлу в командной строке Windows
Для примера создадим документ Word с именем Doc3 и поместим его в любую папку и посмотрим его путь в командной строке.
Как скопировать путь к файлу на Mac
Пути к файлам и папкам на Маке можно узнать так же, как и в Виндовс через Shift, только названия кнопок другие ⇒
В буфер обмена скопируется полный путь к файлу например ⇒
Скопировать полный путь до любого файла достаточно просто и с этим справится любой пользователь ПК или ноутбука.
Абсолютный и относительный пути
Путь (от англ. path) — набор символов, показывающий расположение файла или каталога в файловой системе.
Например, в следующей записи G:\EPIM Pro\Необходимые программы\ABBYY FineReader 10.0.102.95 Pro\readme.txt
readme.txt — это имя файла, а G:\EPIM Pro\Необходимые программы\ABBYY FineReader 10.0.102.95 Pro — путь к нему.
Полный (абсолютный) путь к файлу начинается с логического имени диска. Далее идут имена вложенных друг в друга папок (их может быть сколько угодно много). В последней папке содержится требуемый файл.
Стандартный путь состоит из трех компонентов ⇒
Если присутствуют все три компонента, путь является абсолютным. Полный путь всегда начинается с корневого каталога.
Если буква тома или диска не указана и имя каталога начинается с символа разделителя, то такой путь задан относительно корня текущего диска. В противном случае путь задан относительно текущего каталога.
В следующей таблице показаны некоторые возможные пути к каталогам и файлам ⇒
C:\Users\Alex\AppData – абсолютный путь к файлу из корня диска C.
\Alex\AppData – относительный путь из подкаталога.
Что такое расположение имени файла и расположение этого процесса
В продолжение рубрики «Основы», сегодня речь пойдет о процессах в Windows. Разберем что это такое, на что они влияют и с помощью чего их можно контролировать.
В операционной системе «процессом» является экземпляр компьютерной программы, которая запущенна в данный момент. Сама по себе программа является всего лишь набором правил и кода, тогда как процесс является фактическим выполнением всего этого. Задачи одной и той же программы могут выполняться в нескольких процессах и, естественно, каждому активному процессу требуется определенное количество системных ресурсов, и чем больше их одновременно запущенно, тем медленнее начинает работать компьютер.
Многих начинающих пользователей мало интересует, какие скрытые процессы у них работают, а между тем, есть смысл поинтересоваться, не работают ли какие-нибудь фоновые программы и сервисы, в которых нет необходимости и которые при этом впустую расходуют процессорное время и память. Но прежде чем отключать ненужные процессы, чтобы освободить ресурсы компьютера, необходимо научиться разбираться в них, чтобы случайно не затронуть, например, процессы относящиеся к системным, многие из которых запускаются во время старта компьютера и критически необходимы для функционирования операционной системы и других приложений.
Следует также упомянуть, что большинство вирусов для осложнения обнаружения маскируют себя под какой-либо из процессов. Именно по этим причинам важно уметь их опознавать и идентифицировать.
Для того чтобы увидеть весь список активных процессов необходимо открыть «Диспетчер задач» (Task Manager). Сделать это можно тремя распространенными способами:
— комбинация клавиш ctrl + alt + del
— комбинация клавиш ctrl +shift + esc
или
— правый клик мыши на панели задач — пункт «Диспетчер задач».
Находясь в окне диспетчера, выберите вкладку «Процессы».
В открывшемся окне находится несколько столбцов с помощью которых мы и сможем получить первую необходимую информацию о том, какие процессы загружены и сколько ресурсов они потребляют.
1. Имя образа — название процесса
2. Пользователь — от какой учетной записи запущен процесс
3. ЦП — показывает загрузку процессора в процентном соотношении
4. Память — выделенный объем оперативной памяти
5. Описание — краткое описание того какая программа, служба или сервис инициирует данный процесс.
В самом низу окна показывается суммарное количество активных процессов, общая загрузка процессора и оперативной памяти в процентах.
Чтобы отключить ненужный процесс, необходимо выбрать один из них и нажать кнопку «Завершить процесс». Однако простое «Завершение процесса» просто отключит его до следующей перезагрузки Windows. Поэтому, если вы хотите навсегда избавиться от него, необходимо отключить его запуск в самом приложении, которое запускает этот процесс, или отключить активирующую его службу, или убрать из автозагрузки, а может и вовсе удалить ненужное приложение.
Если для получения информации о процессе вам будет недостаточно стандартных столбцов, можно добавить дополнительные. Для этого в главном меню Диспетчера задач нажмите «Вид» и в открывшемся меню выберите пункт «Выбрать/Добавить столбцы».
Выставьте галочки напротив пунктов «ИД процесса (PID)» и «Путь к образу». Нажмите «Ок».
Теперь в столбце ««Путь к образу» вы можете видеть расположение файла, который инициирует запущенный процесс.
А информация столбца «ИД процесса (PID)» будет полезна, если вам понадобится узнать, например, какая служба запускает процесс «Svchost.exe».
Заглянув немного вперед, почему мы выбрали именно его в качестве примера. Это важный системный процесс и нужен для включения и управления различных служб. Путаница у многих пользователей с этим процессом возникает от того что одновременно могут быть запущены несколько его экземпляров, но все от разных служб. И для того чтобы понять, какая именно служба относится к отдельно взятому процессу «Svchost.exe», нам и понадобится его числовой идентификатор — PID. Запомнив число, указанное в этом столбце переходим в «Диспетчере Задач» на вкладку «Службы».
Находясь в этом окне, нажмите левой кнопкой мыщи по заголовку столбца «ИД процесса». Список отсортируется и вы без труда сможете найти процесс по PID, посмотрев его описание в соответствующем столбце.
Сведений в этом окне конечно очень мало, однако позволяет примерно понять, какая именно служба запустила «Svchost.exe». Мы уже упоминали этот процесс в статье «svchost.exe — вирус или нет?»
Еще одна возможность увидеть, где располагается файл инициирующий запуск процесса, это нажать правой кнопкой мыши на одном из них и выбрать пункт «Открыть место хранения файла».
Со временем вы научитесь легко опознавать любые процессы. Для того, чтобы немного облегчить вам эту задачу, ниже приводим список наиболее типичных программных и системных процессов, большинство из которых по умолчанию запускаются вместе с операционной системой.
alg.exe — системный процесс. служба, являющаяся одним из компонентов ОС Windows необходимая для доступа к Интеренету и работы Брандмауэра. Если завершить этот процесс то подключение к интернет оборвется до следующей перезагрузки Windows.
ati2evxx.exe — является одним из компонентов драйверов для видеокарт AMD/ATI. Осуществляет работу горячих клавиш. Из-за большой нагрузки на ЦП рекомендуется отключить этот процесс и соответствующую службу.
BTTray.exe — компонент драйвера Bluetooth от Widcomm. Необходим для их работы.
csrss.exe — системный процесс Windows, обеспечивающий работу компонента «клиент/сервер». Не может быть отключен. Наиболее сильно подвержен заражению вирусов.
ctfmon.exe — системный процесс, отвечающий за языковую панель, индикатор, отображающий текущую раскладку клавиатуры и обеспечивающий поддержку других альтернативных методов ввода. Отключение этого процесса есстевстенно не рекомендуется.
dwm.exe — системный процесс Windows. Интегрирован в систему, начиная с Windows Vista и 7. Отвечает за графические эфекты рабочего стола, окон и меню, а также нормальное функционирование интерфейса «Aero».
explorer.exe — критический необходимый системный процесс проводника Windows, отвечающий за отображение рабочего стола и меню, возможность осуществления навигации пользователя. Не стоит его отключать.
issch.exe – процесс, позволяющий выполнять проверку обновлений в фоновом режиме стандартного инсталлятора Windows и других программ.
lsass.exe – необходимый системный процесс, отвечающий за работу локального сервера проверки подлинности, политику безопасности и авторизации пользователей. Взаимодействует с службой winlogon. Не может быть завершен.
lsm.exe – системный процесс, управляющий удаленными подключениями к локальной системе. Не нужно отключать.
rthdcpl.exe – Процесс, обеспечивающий работу контрольной панели Realtek HD Audio. Иконка для этой программы находится в трее, рядом с часами. Завершение этого процесса может вызвать проблемы работы звука на системе.
rundll32.exe — Необходимй системный процесс Windows запускаемый утилитой командной строки. Позволяет запускать функции и команды DLL — файлов.
services.exe — важный системный процесс, отвечающий за за управление всеми системными службами.
smss.exe — необходимый системный процесс, отвечающий за запуск пользовательского сеанса, а также запуск процессов Winlogon и Csrss.exe. Завершать работу этого процесса нельзя.
spoolsv.exe — системный процесс. Отвечает за функции печати (принтер, факс и тд.).
svchost.exe — один из главных системных процессов, отвечающий за работу целого ряда сервисов и служб. Одновременно может работать несколько его копий, т.к. каждая содержит различные службы.
wininit.exe — необходимый системный процесс WIndows. ВЫполняет в фоновом режиме поддержку работы некоторых наиболее важных системных служб и программ, а также отвечает за своевременный запуск элементов автозагрузки.
winlogon.exe — Критически важный системный процесс. Отвечает за вход и выход пользователей в систему. Не может быть завершен.
wmiprvse.exe — системный процесс, один из компонентов Инструментария управления Windows. Отключение не рекомендуется.