CLR блок SQL: получить поток байтов?

У меня есть CLR SQL dll, я хочу развернуться, но нашел, что можно встроить байт stream/varbinary_literal/varbinary_expression/assembly биты в текстовый файл для обхождения грязной стычки упаковки DLL и проверки, что это доступно для команды CREATE ASSEMBLY.

Но то, что я должен все же найти, - то, как получить тот байт stream/varbinary_literal/varbinary_expression/assembly значение битов. Я не нашел последовательной терминологии, и что я продолжаю находить в использовании Load().

15
задан radbyx 4 March 2019 в 12:12
поделиться

1 ответ

Это просто шестнадцатеричное представление библиотеки DLL. Этот бит должен помочь:

    static string GetHexString(string assemblyPath)
    {
        if (!Path.IsPathRooted(assemblyPath))
            assemblyPath = Path.Combine(Environment.CurrentDirectory, assemblyPath);

        StringBuilder builder = new StringBuilder();
        builder.Append("0x");

        using (FileStream stream = new FileStream(assemblyPath,
              FileMode.Open, FileAccess.Read, FileShare.Read))
        {
            int currentByte = stream.ReadByte();
            while (currentByte > -1)
            {
                builder.Append(currentByte.ToString("X2", CultureInfo.InvariantCulture));
                currentByte = stream.ReadByte();
            }
        }

        return builder.ToString();
    }

Вы должны использовать результирующую строку следующим образом:

string hexString = GetHexString(assemblyPath);
string sql = "CREATE ASSEMBLY [" + assemblyName + "] FROM " + hexString + 
             " WITH PERMISSION_SET = " + somePermissionSet;
20
ответ дан 1 December 2019 в 02:37
поделиться
Другие вопросы по тегам:

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