COM Interop без regasm

Взгляды, хорошие мне. Если индексатор был не подписан (uint и т.д.), Вам, возможно, придется принять это во внимание. Назовите меня ленивым, но в том (неподписанном) случае, я мог бы просто использовать переменную счетчика:

uint pos = arr.Length;
for(uint i = 0; i < arr.Length ; i++)
{
    arr[--pos] = 42;
}

(на самом деле, даже здесь необходимо было бы остерегаться случаев как прибытие. Длина = uint. MaxValue..., возможно, a! = где-нибудь..., конечно, который является очень маловероятным случаем!)

18
задан SLaks 4 September 2009 в 02:04
поделиться

4 ответа

Эту задачу можно решить, построив скрипт, начиная с вывода этого оператора:

17
ответ дан 30 November 2019 в 08:10
поделиться

Я нашел возможное решение , но у меня еще нет времени попробовать его.

1
ответ дан 30 November 2019 в 08:10
поделиться

К сожалению, из-за того, как работает COM, было бы невозможно установить COM-объект (взаимодействие или иное) без прав администратора.

Когда вы регистрируете com-объекты, он записывает несколько записей в HKEY_CLASSES_ROOT , который является ключом машинного уровня и поэтому требует прав администратора.

Теперь, поскольку вы сказали, что хакерское решение приемлемо, вот несколько возможных шагов, которые вы можете предпринять, чтобы заставить его работать; однако, если у вас нет прав администратора, я предполагаю, что это не ваша машина и, скорее всего, рабочая машина. Эти шаги вполне могут привести к увольнению. Стандартный отказ от ответственности и еще много чего: Я не виноват, если вы идиот и попали в суд / уволили / застрелили / ограбили и т. Д.

Сначала вам нужно выяснить, какие ключи реестра нужно добавить. Убедитесь, что вы делаете это на «чистой» машине, на которой хост не видел ваш компонент раньше (или на той, которая, как вы знаете, не имеет ключей reg). Установите программу мониторинга машины для захвата ключей. Здесь - ссылка на [несвязанную] статью MS, где они рекомендуют некоторые приложения, которые именно это делают.

Теперь, когда монитор запущен, установите, вы добавляете. Теперь вы сможете получить журнал о том, какие ключи необходимо создать. Используя свой журнал, создайте файлы экспорта реестра.

А теперь вот где возникают сложности. По сути, вы должны загрузить машину с образа BartPE, смонтировать реестр и запустить свои сценарии; однако ключевые пути будут неправильными, поэтому скрипты не будут работать «из коробки».

У MS есть статья в TechNet (но в ссылке есть скобки, так что нет. не играй хорошо) итак Google это должен быть первый результат.

Прочитав эту статью, вы увидите, что реестр компьютеров будет смонтирован как подраздел HKEY_LOCAL_MACHINE . Что вам нужно сделать, так это изменить экспорт реестра, чтобы он соответствовал новому пути. Как только этот шаг будет завершен, вы сможете загрузиться со своего образа BartPE, смонтировать реестр, а затем импортировать свои сценарии, размонтировать куст и затем перезагрузиться. Предполагая, что вы скопировали файлы по правильному пути, все должно работать.

Удачи.

Как только этот шаг будет завершен, вы сможете загрузиться с вашего образа BartPE, смонтировать реестр, а затем импортировать свои сценарии, размонтировать куст и затем перезагрузиться. Предполагая, что вы скопировали файлы по правильному пути, все должно работать.

Удачи.

Как только этот шаг будет завершен, вы сможете загрузиться со своего образа BartPE, смонтировать реестр, а затем импортировать свои сценарии, размонтировать куст и затем перезагрузиться. Предполагая, что вы скопировали файлы по правильному пути, все должно работать.

Удачи.

0
ответ дан 30 November 2019 в 08:10
поделиться

Чтобы зарегистрировать COM-объект (например, элемент управления ActiveX) и сделать его видимым для всех пользователей системы, требуются права администратора.

НО, если видимость для всех пользователей не требуется (или невозможна из-за ограниченных пользовательских ограничений), то COM-объект может быть зарегистрирован только для конкретного пользователя.

Обычно это делается путем регистрации объекта в HKCU вместо HKLM. Это будет применяться к «обычным» COM-объектам и объектам, предоставляемым через .NET COM Interop.

Другие, более мелкие подходы, также выходят из уже упомянутого RegFree COM, который обращается к конкретному исполняемому файлу.

Таким образом, учитывая все вышесказанное, решение по сохранению всей информации в файл reg и замене HKLM на HKCU должно работать (неприятно, но инструменты тоже).

5
ответ дан 30 November 2019 в 08:10
поделиться
Другие вопросы по тегам:

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