clickonce возможный с регулярным исполняемым файлом C++

Java 9 - JEP 259: API Stack-Walking

JEP 259 предоставляет эффективный стандартный API для обхода стека, который обеспечивает легкую фильтрацию и медленный доступ к информации в стеке следы. До API Stack-Walking распространенными способами доступа к фреймам стека были:

Throwable::getStackTrace и Thread::getStackTrace возвращать массив объектов StackTraceElement, которые содержат имя класса и имя метода каждого стека элемент трассировки.

SecurityManager::getClassContext - это защищенный метод, который позволяет подклассу SecurityManager обращаться к контексту класса.

JDK-внутренний метод sun.reflect.Reflection::getCallerClass, который вы не должны использовать в любом случае

Использование этих API-интерфейсов обычно неэффективно:

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

Чтобы найти класс непосредственного абонента, сначала получите StackWalker:

StackWalker walker = StackWalker
                           .getInstance(StackWalker.Option.RETAIN_CLASS_REFERENCE);

Затем либо вызовите getCallerClass():

Class callerClass = walker.getCallerClass();

или walk StackFrame и получить первое предшествующее StackFrame:

walker.walk(frames -> frames
      .map(StackWalker.StackFrame::getDeclaringClass)
      .skip(1)
      .findFirst());

5
задан Jon 23 June 2009 в 21:13
поделиться

2 ответа

Между «идентификацией сборки» и установкой архитектуры процессора на MSIL кажется, что вы говорите ему, что точка входа находится в какой-то сборке .NET.

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

Вы можете создать прокладку, как описано здесь .

3
ответ дан 15 December 2019 в 06:33
поделиться

Приложением нужно управлять. ClickOnce использует систему безопасности, встроенную в среду CLR, для ограничения возможностей приложения. В собственном коде ничего подобного нет.

0
ответ дан 15 December 2019 в 06:33
поделиться
Другие вопросы по тегам:

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