#c_sharp #net #windows #cmd
Подскажите, что нужно сделать, что бы программу можно было запустить по имени через консоль? Например, если написать в CMD слово Skype, то запускается Skype.
Ответы
Ответ 1
Когда вы пишете команду в консоли, она ищется в директориях из переменной окружения PATH. Варианта всего два. Или добавить директорию с программой в PATH - или положить программу в ту директорию, которая уже есть в PATH.Ответ 2
Рекомендованный Microsoft способ — ключ реестра App Paths. При вводе имени программы она ищется в рабочем каталоге, в каталогах Windows и Windows\System32, в каталогах, перечисленных в переменной окружения PATH, и в ключе реестра App Paths. Для регистрации только у текущего пользователя применяйте ключ HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\App Paths Для глобальной регистрации используйте тот же путь, но в HKEY_LOCAL_MACHINE. Пусть ваша программа называется myapp.exe. Создайте вложенный ключ myapp.exe в App Paths. Поместите (Default)-значение типа REG_SZ, содержащее полный путь к приложению. Вы можете также указать другие параметры запуска приложения здесь. Например, вы можете сделать так, чтобы к значению переменной окружения PATH при запуске вашей программы добавлялись интересующие вас каталоги. Код на C#: using System; using System.Linq; using System.Reflection; using Microsoft.Win32; namespace AppPathRegistration { class Program { static void Main(string[] args) { if (args.FirstOrDefault() == "/install") Install(); else Run(); } const string appPathsName = @"Software\Microsoft\Windows\CurrentVersion\App Paths"; static void Install() { var name = "lalafa.exe"; var path = Assembly.GetEntryAssembly().Location; using (var appPaths = Registry.CurrentUser.CreateSubKey(appPathsName)) using (var subkey = appPaths.CreateSubKey(name)) subkey.SetValue(null, path); } static void Run() { Console.WriteLine("Test application, press any key to finish..."); Console.ReadKey(intercept: true); } } } Обратите внимание, что имя, которое вы регистрируете, вовсе не обязано совпадать с именем вашей программы. Об остальных возможностях смотрите официальную документацию. Ключ реестра App Paths принимается во внимание при запуске программ посредством функций ShellExecute/ShellExecuteEx. CreateProcess в реестр не подглядывает, и перенаправление не найдёт. Но оболочка Windows и командная строка используют именно shell-функции. Вот немного истории этого ключа (на английском).
Комментариев нет:
Отправить комментарий