Могу ли я использовать библиотеку Sharpshell для помещения хеша фиксации в DLL?C#

Место общения программистов C#
Ответить
Anonymous
 Могу ли я использовать библиотеку Sharpshell для помещения хеша фиксации в DLL?

Сообщение Anonymous »

Некоторое время назад я спросил, как добавить хеш фиксации GIT к свойствам файла. Решения, предложенные тогда, оказались непригодными для использования.
На прошлой неделе (через три года после вопроса) я спросил об этом в ChatGPT, и там появился проект на Github под названием "Sharpshell". , какой-то проект с возможностью создания расширений для проводника Windows.
Несколько минут назад, ища «Sharpshell» здесь на сайте, я понял, что это даже стало библиотекой C#. Так что у меня снова появляется надежда.
Важное сообщение: с этого момента сообщение становится ±нечетким, поскольку я начал писать пост и продолжил свое расследование, в результате чего этот пост регулярно получал обновления и изменения.
Просто чтобы прояснить, что мне нужно:

DLL в моя компания не получает номер версии, и нам нравится, чтобы он оставался таким.

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

    Пример: я пытаюсь выбрать (скопировать/вставить) размер файла следующего размера, и это возможно:

    Изображение

    Результат: 17,3 КБ (17,734 байта)

    Контрпример: я пытаюсь выбрать (скопировать/вставить) дату создания этого файла:
    Изображение

    Результат:

    Если его невозможно выбрать сразу, я согласен с контекстным меню, вызываемым правой кнопкой мыши, что делает это возможным.
  • Чтобы всего этого добиться, Я бы попросил, чтобы "острая" DLL присутствовала в том же каталоге, что и сама DLL (некоторые из наших клиентов недавно стали жертвами кибератак, и они могут очень неохотно предоставлять нам доступ к "C:\Windows" или " каталоги C:\Windows\System32»). Это, очевидно, означает, что для DLL за пределами нашего каталога мы ничего не видим, и меня это полностью устраивает.

    Просто чтобы вы имели представление: я скачал проект «shellmain», запустите "ServerManager.exe" для установки контекстного меню "CountLines", теперь оно выглядит следующим образом:

    [img]https://i.sstatic.net /zOfEM3C5.png[/img]

    Чтобы расширение «CountLines» работало на моем компьютере, мне нужно было запустить «Сервер, Установить» и «Проводник, перезапустить проводник», изменив Проводник Windows для весь мой компьютер. Я боюсь, что мои клиенты могут не согласиться с такой процедурой и разрешить использование Проводника Windows по-разному только в определенных каталогах. Возможно ли это?
Кто-нибудь знает, можно ли этого достичь с помощью C# "Sharpshell", на который указывает соответствующий вопросительный тег?
Заранее спасибо
P.s. 1: так называемые «Пошаговые руководства», похоже, недоступны:

[img]https://i .sstatic.net/QoegsSnZ.png[/img]

P.s.2: Большинство расширений предназначены для доступа к уже доступной информации (например, подсчету количества строк внутри файла), пока я ищу добавление дополнительной информации в файл, и это нужно сделать таким образом, чтобы я мог скопировать этот файл на компьютер/каталог, не поддерживая мой Расширение Explorer, но когда файл наконец поступает на компьютер клиента, который поддерживает мое расширение, эта дополнительная информация, возможно, не была отключена. Я считаю, что для этого мне нужно заполнить некоторые «метаданные» файла, который в настоящее время не используется. Это правильно?

P.s. 3: продолжая расследование, я обнаружил, что команда командной строки wmic datafile отображает метаданные файла. В случае DLL я вижу вот что (только заголовки):

Код: Выделить всё

AccessMask, Archive, Caption, Compressed,
CompressionMethod, CreationClassName, CreationDate,
CSCreationClassName, CSName, Description, Drive,
EightDotThreeFileName, Encrypted, EncryptionMethod, Extension,
FileName, FileSize, FileType, FSCreationClassName, FSName, Hidden,
InstallDate, InUseCount, LastAccessed, LastModified, Manufacturer,
Name, Path, Readable, Status, System, Version, Writeable
У меня такое впечатление, что этот список фиксирован для каждого существующего типа файлов (exe, dll, ...).

У меня такое впечатление, что Мне нужно будет сделать следующее:
  • Установить расширение Windows Shell на свой компьютер (и компьютер каждого из моих коллег).
  • Установите расширение Windows Shell на компьютер клиента.
  • Либо установите расширение Windows Shell на каждый компьютер, через который будет проходить DLL.
=> Если я пропущу один из этих шагов, я потеряю хеш фиксации GIT в метаданных моего файла.

Кто-нибудь может подтвердить?

Подробнее здесь: https://stackoverflow.com/questions/791 ... h-to-a-dll
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»