чтение файла манифеста приложения?

Инструмент сравнения по умолчанию в VS 2013 позволяет игнорировать пробелы в конце концов. Просто запустите стандартный процесс разграничения. Когда Visual Studio выявляет различия, посмотрите на панели инструментов, где вы увидите значок, который выглядит как документ с 5 точками под ним, как показано ниже. Эта кнопка переключает отображение игнорируемых пробелов. Это работало достаточно хорошо для меня; Я хотел, чтобы он игнорировал изменения в белом пространстве, вызванные отступом.

34
задан Brian R. Bondy 8 January 2009 в 02:51
поделиться

5 ответов

Файлы манифеста Windows являются ресурсами Win32. Другими словами, они встраиваются к концу EXE или DLL. Можно использовать LoadLibraryEx, FindResource, LoadResource и LockResource для загрузки встроенного ресурса.

Вот простой пример, который извлекает его собственную декларацию...

BOOL CALLBACK EnumResourceNameCallback(HMODULE hModule, LPCTSTR lpType,
    LPWSTR lpName, LONG_PTR lParam)
{
    HRSRC hResInfo = FindResource(hModule, lpName, lpType);
    DWORD cbResource = SizeofResource(hModule, hResInfo);

    HGLOBAL hResData = LoadResource(hModule, hResInfo);
    const BYTE *pResource = (const BYTE *)LockResource(hResData);

    TCHAR filename[MAX_PATH];
    if (IS_INTRESOURCE(lpName))
        _stprintf_s(filename, _T("#%d.manifest"), lpName);
    else
        _stprintf_s(filename, _T("%s.manifest"), lpName);

    FILE *f = _tfopen(filename, _T("wb"));
    fwrite(pResource, cbResource, 1, f);
    fclose(f);

    UnlockResource(hResData);
    FreeResource(hResData);

    return TRUE;   // Keep going
}

int _tmain(int argc, _TCHAR* argv[])
{
    const TCHAR *pszFileName = argv[0];

    HMODULE hModule = LoadLibraryEx(pszFileName, NULL, LOAD_LIBRARY_AS_DATAFILE);
    EnumResourceNames(hModule, RT_MANIFEST, EnumResourceNameCallback, NULL);
    FreeLibrary(hModule);
    return 0;
}

, С другой стороны, можно использовать MT.EXE из Windows SDK:

>mt -inputresource:dll_with_manifest.dll;#1 -out:extracted.manifest
39
ответ дан Roger Lipscombe 8 July 2019 в 02:02
поделиться

Можно извлечь/заменить/объединить/проверить декларации с помощью инструмента декларации командной строки, mt.exe, который является частью Windows SDK:

C:\Program Files\Microsoft SDKs\Windows\v6.1>mt /?
Microsoft (R) Manifest Tool version 5.2.3790.2075
...
> To extract manifest out of a dll:
mt.exe -inputresource:dll_with_manifest.dll;#1 -out:extracted.manifest

РЕДАКТИРОВАНИЕ: Я нашел инструмент в C:\Program Files\Microsoft SDKs\Windows\v6.1\bin

27
ответ дан Patrick 8 July 2019 в 02:02
поделиться

Существует явный инструмент средства просмотра, доступный здесь - я не знаю, сделает ли автор исходный код доступным.

10
ответ дан jeffm 8 July 2019 в 02:02
поделиться

Самый легкий способ просматривать/редактировать декларации в скомпилированных приложениях использует Тюнер Ресурса: http://www.restuner.com/tour-manifest.htm

В некоторых случаях, это более устойчиво, чем mt.exe от MS, и это - визуальный инструмент.

2
ответ дан Wylder 8 July 2019 в 02:02
поделиться

Resource Tuner было бы неплохо, если бы он поддерживал код x64, но на сегодняшний день он по-прежнему только для 32-битных приложений. Resource Hacker (новейшая общедоступная бета-версия) поддерживает как x86, так и x64, которые доступны здесь: http://angusj.com/resourcehacker/

4
ответ дан 27 November 2019 в 06:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: