Как обновить пути и значки стороннего программного обеспечения в моей программе?

Я создал своего рода программу быстрого доступа для быстрого доступа к сторонним программам/программному обеспечению и папкам на моем компьютере. Программа работает хорошо, но на днях несколько программ были обновлены компанией-разработчиком программного обеспечения, и это вызвало исключения в моей программе, потому что пути были изменены на новую обновленную версию их программного обеспечения.

Чтобы отобразить значок каждой программы, я извлекаю значок из пути к файлу исполняемого файла сторонней программы/программного обеспечения. Но некоторые программы содержат информацию о версии или дате «в пути», из-за чего возникают исключения (см. следующий список). Это также вызывает исключения при запуске программ, потому что я использую путь exec для запуска каждой программы. Итак, когда компания-разработчик программного обеспечения обновляет свое программное обеспечение, информация о версии или дате в пути изменяется и выдает исключение, потому что путь изменился, и моя программа больше не может найти правильный путь ни для извлечения значка, ни для запуска программы?

  • C:\Program Files\Adobe\Adobe Photoshop 2023\Photoshop.exe
  • C:\Program Files (x86)\IObit\Driver Booster\10.0.0\DriverBooster.exe
  • C:\Windows\system32\WindowsPowerShell\v1.0\powershell.exe
  • C:\Program Files\Paratext 9\Paratext.exe
  • C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\IDE\devenv.exe

В настоящее время я думаю об использовании значков в My.Resources в качестве обходного пути для проблемы извлечения значков. Но это не разрешает пути exec, которые я использую для запуска программ? Кто-нибудь знает способ обновить информацию о пути при выпуске новых версий программы? Я был бы очень признателен за помощь в этом, потому что я никогда не сталкивался с этой проблемой раньше и, честно говоря, не знаю, с чего начать, чтобы решить эту проблему?

Моя программа загружает пути к файлам для каждого стороннего программного обеспечения из текстового файла в ListBox (т.е. жестко запрограммировано). Это часть проблемы. Кто-нибудь знает, как я могу кодировать, чтобы получить пути для каждой программы в режиме реального времени, чтобы получить фактические пути, чтобы они всегда обновлялись?

Связанные вопросы по SO

Когда стороннее программное обеспечение обновляется, все пути к программному обеспечению, содержащие информацию о версии (например, версия, год и т. д.), изменяются. Это предотвращает извлечение значков из жестко запрограммированных путей, которые не были обновлены. В качестве обходного пути для этой проблемы я пытаюсь научиться извлекать пути непосредственно из реестра, загружать их во время выполнения, а затем извлекать значки программного обеспечения из обновленных путей. Пожалуйста, смотрите мой вопрос по следующей ссылке, которая, надеюсь, объясняет больше того, чего я пытаюсь достичь:

Реестр-Иерархия

Ответ на этот случай должен быть вам полезен, вы можете сослаться на него. stackoverflow.com/questions/14036634/…

Hao Yu-MSFT 15.11.2022 07:41

Спасибо @HaoYu-MSFT, но боюсь, это не ответ на мой вопрос выше. Мне нужно обновить иконки и пути из стороннего ПО!

John Michael Wilkinson 15.11.2022 16:09
howtogeek.com/687096/… codeguru.com/visual-basic/… Эти две ссылки должны вам помочь
Hao Yu-MSFT 21.11.2022 07:21

Привет, спасибо @HaoYu-MSFT! Эти ссылки очень помогают, так как я заинтересован в изучении любых альтернативных методов, которые я могу найти! Однако то, над чем я сейчас работаю, — это попытка извлечь пути непосредственно из реестра при запуске, чтобы свести к минимуму проблемы при извлечении значков из путей, обновленных поставщиком программного обеспечения. Я изо всех сил пытаюсь найти примеры того, как этого добиться! См.: stackoverflow.com/questions/74525347/…

John Michael Wilkinson 21.11.2022 23:13
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
4
92
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Откройте Visual Studio и создайте новое приложение Visual Basic Windows Forms. Добавьте в форму следующие объекты:

Две кнопки Один вид списка Один список изображений Задайте следующие свойства для ListView:

Вид: SmallIcon SmallImageList: имя вашего списка изображений. Ваш дизайн должен выглядеть как на рисунке 1. [![введите здесь описание изображения][1]][1] Дизайн

Код:

Public Sub ExtractIcon_1()

      Dim dInfo As New System.IO.DirectoryInfo("c:\")

      Dim lvItem As ListViewItem

      ListView2.BeginUpdate()

      ListView2.Items.Clear()

      Dim CurrFile As System.IO.FileInfo

      For Each CurrFile In dInfo.GetFiles()

         Dim iFileIcon As Icon = SystemIcons.WinLogo

         lvItem = New ListViewItem(CurrFile.Name, 1)

         If Not (ImageList2.Images.ContainsKey _
               (CurrFile.Extension)) Then

            iFileIcon = System.Drawing.Icon.ExtractAssociatedIcon _
               (CurrFile.FullName)

            ImageList2.Images.Add(CurrFile.Extension, iFileIcon)

         End

         lvItem.ImageKey = CurrFile.Extension
         ListView2.Items.Add(

      Next CurrFile

      ListView2.EndUpdate()

   End Sub

Добавьте следующую подпрограмму за первой кнопкой:

Private Sub Button1_Click(sender As Object, e As EventArgs) _
         Handles Button1.Click

      ExtractIcon_1()

   End Sub

https://www.codeguru.com/visual-basic/extracting-icons-associated-with-files-in-visual-basic-net/

Поскольку вы сопоставили и опубликовали новый вопрос, вы можете пометить мой ответ как принятый, чтобы изменить его статус на «Отвечено». Он может предоставить решения аналогичных проблем для других. Большое спасибо!

Hao Yu-MSFT 23.11.2022 08:56

Спасибо @Hao Yu-MSFT! Мой вопрос здесь был обновлен для удобства чтения! Я уже построил приведенный вами пример, опубликованный Hannes DuPreez, но в нем отсутствуют некоторые фрагменты кода, например. ListView2.Items.Add(??? Пожалуйста, посмотрите мой другой пост, который, возможно, объясняет, чего я пытаюсь достичь: иерархия реестра

John Michael Wilkinson 23.11.2022 16:41

Я пометил ваш пост как возможный ответ, но этот пример касается отображения значков (например, проводника). На самом деле я пытаюсь извлечь обновленные пути из реестра, а затем извлечь значки непосредственно из путей. Это обходной путь для упомянутой выше проблемы с путями к программному обеспечению сторонних производителей, которые включают информацию о версии при обновлении их программного обеспечения, что предотвращает извлечение значков из жестко заданного пути! Поэтому мне нужен способ обновлять пути при обновлении программного обеспечения, и если я смогу узнать, как реализовать идею реестра, я думаю, что это сработает!

John Michael Wilkinson 23.11.2022 17:01

Другие вопросы по теме