RU2377634C2 - Программный интерфейс для лицензирования - Google Patents

Программный интерфейс для лицензирования Download PDF

Info

Publication number
RU2377634C2
RU2377634C2 RU2004131031/09A RU2004131031A RU2377634C2 RU 2377634 C2 RU2377634 C2 RU 2377634C2 RU 2004131031/09 A RU2004131031/09 A RU 2004131031/09A RU 2004131031 A RU2004131031 A RU 2004131031A RU 2377634 C2 RU2377634 C2 RU 2377634C2
Authority
RU
Russia
Prior art keywords
license
computer program
call
specified
computer
Prior art date
Application number
RU2004131031/09A
Other languages
English (en)
Other versions
RU2004131031A (ru
Inventor
Каглар ГУНИАКТИ (US)
Каглар ГУНИАКТИ
Нинг ЧЖАН (US)
Нинг ЧЖАН
Вен-Пин Скотт ХСУ (US)
Вен-Пин Скотт ХСУ
Original Assignee
Майкрософт Корпорейшн
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Майкрософт Корпорейшн filed Critical Майкрософт Корпорейшн
Publication of RU2004131031A publication Critical patent/RU2004131031A/ru
Application granted granted Critical
Publication of RU2377634C2 publication Critical patent/RU2377634C2/ru

Links

Images

Classifications

    • AHUMAN NECESSITIES
    • A01AGRICULTURE; FORESTRY; ANIMAL HUSBANDRY; HUNTING; TRAPPING; FISHING
    • A01KANIMAL HUSBANDRY; CARE OF BIRDS, FISHES, INSECTS; FISHING; REARING OR BREEDING ANIMALS, NOT OTHERWISE PROVIDED FOR; NEW BREEDS OF ANIMALS
    • A01K87/00Fishing rods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q30/00Commerce
    • G06Q30/06Buying, selling or leasing transactions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/106Enforcing content protection by specific content processing
    • G06F21/1063Personalisation
    • HELECTRICITY
    • H01ELECTRIC ELEMENTS
    • H01QANTENNAS, i.e. RADIO AERIALS
    • H01Q1/00Details of, or arrangements associated with, antennas
    • H01Q1/12Supports; Mounting means
    • H01Q1/22Supports; Mounting means by structural association with other equipment or articles
    • HELECTRICITY
    • H01ELECTRIC ELEMENTS
    • H01QANTENNAS, i.e. RADIO AERIALS
    • H01Q1/00Details of, or arrangements associated with, antennas
    • H01Q1/27Adaptation for use in or on movable bodies
    • H01Q1/32Adaptation for use in or on road or rail vehicles
    • H01Q1/325Adaptation for use in or on road or rail vehicles characterised by the location of the antenna on the vehicle
    • H01Q1/3275Adaptation for use in or on road or rail vehicles characterised by the location of the antenna on the vehicle mounted on a horizontal surface of the vehicle, e.g. on roof, hood, trunk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2137Time limited access, e.g. to a computer or data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q2220/00Business processing using cryptography
    • G06Q2220/10Usage protection of distributed data files
    • G06Q2220/18Licensing

Abstract

Изобретение относится к области компьютерных интерфейсов прикладного программирования (API) для лицензирования программного обеспечения. Техническим результатом является расширение функциональных возможностей. Лицензия определяет права по отношению к программному продукту. Программный продукт вызывает API метод "использовать право" для того, чтобы применить право. Если право существует, то сервис привязывает право к лицензии, в которой это право найдено. Программный продукт поддерживает принудительное исполнение условий лицензии, давая или отказывая в допуске к некоторым или всем функциональным возможностям, в зависимости от того, найден ли имеющий силу экземпляр права. С правом могут быть ассоциированы любые данные. API включает в себя метод для извлечения данных из права, которое предварительно было привязано в методе "использовать право". 3 н. и 22 з.п. ф-лы, 5 ил.

Description

Область техники, к которой относится изобретение
Настоящее изобретение относится к области компьютерного программного обеспечения, или более точно, к программным интерфейсам, которые поддерживают принудительное исполнение условий электронных лицензий.
Уровень техники
Коммерческие программные продукты традиционно предоставляются на условиях лицензионных соглашений, которые определяют допустимые границы использования этих программных продуктов. В начале возникновения практики лицензирования программного обеспечения лицензионный договор обычно имел форму юридического документа, который определял права пользователя по отношению к программному продукту. При этом необходимость исполнения условий таких лицензионных соглашений основывалась только на законодательстве. В настоящее время появилась потребность в том, чтобы контролировать исполнение условий лицензионных соглашений на электронном уровне, то есть необходимо, чтобы компьютерные программы содержали код, который активно препятствует или предотвращает использование программного продукта какими-либо способами, запрещенными лицензионным соглашением.
Большинство программных продуктов, которые поддерживают принудительное исполнение условий электронных лицензий, имеют свои собственные средства для управления лицензированием этих программных продуктов и использованием лицензий. Так, типичный коммерческий программный продукт может включать не только код, выполняющий основные функции программного продукта, но также и код для получения, оценки, защиты и управления лицензиями данного программного продукта. Для каждого производителя программного обеспечения разработка и реализация подобных средств зачастую является излишней дублирующей работой. Поэтому желательно разработать систему, которая бы предоставляла базовые функции, связанные с лицензированием программных продуктов, и которая могла бы использоваться большим разнообразием программных продуктов единым и четко определенным способом.
Из изложенного выше следует, что существует потребность в механизме, который позволит преодолеть недостатки предшествующих технологий.
Раскрытие изобретения
Данное изобретение предлагает интерфейс прикладного программирования (API), поддерживающий электронное лицензирование, который предоставляет определенные поддерживающие лицензирование функции для использования программными продуктами. Сервис лицензий выполняет функции, относящиеся к использованию лицензий, и предоставляет программным продуктам доступ к этим функциям через API. Сервис лицензий выполняет функции, такие как получение лицензий, хранение и управление лицензиями, защита лицензий от подделок, оценка того, что лицензии имеют силу, и оценку того, что лицензии корректно привязаны к машине и/или программному продукту, на которой они используются. Программы могут использовать эти функции посредством вызова методов из API.
При типичном использовании API программа вызывает API метод "открыть", чтобы получить уникальный описатель (handle), который используется сервисом лицензий, чтобы идентифицировать эту программу. Затем программа вызывает API метод "использовать право". "Использовать" в данном контексте подразумевает применение определенного права. При вызове метода "использовать право" в качестве параметров ему передается описатель программы и имя соответствующего права, которое нужно использовать. Затем сервис лицензий пытается найти одну или более имеющих силу, корректно привязанных лицензий, которые содержат право с данным именем. Если таких лицензий нет, то программе сообщается о неудаче. Если такие лицензии существуют, то это право привязывается к одной из них и вызывающая программа получает сообщение об этой привязке. В этом случае программа знает, что соответствующее право существует и может выполнять функции, ассоциированные с этим правом.
В предпочтительном воплощении сервис лицензий не определяет, какие функции программа может или не может выполнять согласно какому-либо праву, а также не накладывает существенных ограничений на использование программы. Предпочтительно, если сервис лицензий будет управлять лицензиями таким образом, что, вызывая API, программы будут получать информацию о том, существует право или нет, и в соответствии с этим сами будут выбирать дальнейшее поведение. Например, может существовать право "запустить", означающее, что пользователь имеет право запускать программу. Тогда программа может использовать API, чтобы определить имеется ли действительное (и корректно привязанное, и с неистекшим временем использования) право на запуск программы. Однако если вызов API вернул сообщение, что не существует права запускать программу, программа сама решает отклонить выполнение или совершить какое-либо другое действие, основанное на том, что данное право не существует.
Право может быть связано с информацией, которая становится доступной после успешного вызова метода "использовать право". Например, программа может иметь отдельные правила о том, когда разрешено редактировать, печатать, сохранять и т.д., и эти правила могут храниться в лицензии, содержащей соответствующее право. API предоставляет метод "получить информацию", который позволяет извлекать такую информацию из лицензий.
Другие отличительные особенности изобретения описаны ниже.
Краткое описание чертежей
Предшествующее краткое описание, так же как и последующее подробное описание предпочтительных воплощений, легче понимать, если при чтении пользоваться прилагаемыми чертежами. Для иллюстрации изобретения, на чертежах показаны примеры реализации изобретения; однако изобретение не ограниченно этими частными методами и средствами. На чертежах:
Фиг.1 - структурная схема примера вычислительной среды, в которой может быть реализовано изобретение.
Фиг.2 - структурная схема архитектуры, в которой система выполняет функции лицензирования и предоставляет API программным продуктам.
Фиг.3 - блок-схема способа, посредством которого программа использует API лицензирования.
Фиг.4 - блок-схема способа, посредством которого программа использует право; и
Фиг.5 - блок-схема способа, посредством которого программа получает информацию, относящуюся к используемому праву.
Осуществление изобретения
Обзор
Использование коммерческого программного обеспечения обычно определяется лицензиями, и сейчас стало широко распространено реализовывать такие лицензии в электронной форме, которая может использоваться программным обеспечением для поддержки принудительного исполнения условий лицензии. Для создания системы электронного лицензирования необходимы средства, управляющие использованием лицензий. Дублирование этих средств в каждом программном продукте обременительно и неэкономно. Настоящее изобретение предлагает API, который позволяет различным программным продуктам использовать общую инфраструктуру средства, которая выполняет различные функции, связанные с лицензированием.
Пример вычислительной конфигурации
Фиг.1 показывает пример вычислительной среды, в которой может быть реализовано настоящее изобретение. Эта вычислительная среда 100 является только примером подходящей вычислительной среды и не имеет целью указать какие-либо ограничения на область применения или функциональные возможности настоящего изобретения. Не следует также считать, что вычислительная среда 100 имеет какую-либо зависимость от или требования к какому-либо компоненту или комбинации компонентов, показанных на этом примере вычислительной среды 100.
Изобретение применимо к множеству других общего или специального назначения сред вычислительных систем или конфигураций. Примеры хорошо известных вычислительных систем, сред, и/или конфигураций, которые подходят для использования с изобретением, включают, но не сводятся только к ним: персональные компьютеры, серверные компьютеры, ручные или портативные устройства, многопроцессорные системы, микропроцессорные системы, телевизионные приставки, программируемая потребительская электроника, сетевые персональные компьютеры, миникомпьютеры, универсальные вычислительные машины (mainframe computers), встроенные системы, распределенные вычислительные среды, которые включают в себя любые из вышеперечисленных систем или устройств, и тому подобное.
Изобретение может быть описано в общем контексте машиноисполнимых команд, таких как программные модули, исполняемые компьютером. В общем, программные модули включают процедуры, программы, объекты, компоненты, структуры данных, и т.д., которые выполняют определенные задачи или реализуют определенные абстрактные типы данных. Изобретение может также применяться в распределенных вычислительных средах, где задачи выполняются удаленными обрабатывающими устройствами, которые взаимосвязаны посредством сети связи или посредством других средств передачи данных. В распределенных вычислительных средах программные модули и другие данные могут находиться как на локальных, так и на удаленных компьютерных средствах хранения информации, включающих в себя запоминающие устройства.
На Фиг.1 изображен пример системы для реализации изобретения. Эта система включает в себя вычислительное устройство общего назначения в форме компьютера 110. Компоненты компьютера 110 могут включать в себя, но не в ограничительном смысле: процессорное устройство 120, системную память 130 и системную шину 121, которая связывает различные компоненты системы, в том числе системную память и процессорное устройство 120. Процессорное устройство 120 может состоять из нескольких логических процессорных устройств, например таких, которые поддерживаются на многопоточных процессорах. Системная шина 121 может иметь структуру различных типов, в том числе шину памяти или контроллер памяти, периферийную шину и локальную шину, имеющие любые виды архитектур. В качестве примера, но не ограничения, такие архитектуры включают в себя шины стандартной промышленной архитектуры (ISA), шины микроканальной архитектуры (MCA), шины расширенной архитектуры ISA (EISA), локальные шины стандарта VESA (Ассоциация по стандартам в области видеоэлектроники), шины соединения периферийных устройств (PCI), также известные как шины расширения (Mezzanine bus). Системная шина 121 может также быть реализована как двухточечное соединение, коммутируемая структура (switching fabric) и другими подобными коммуникационными устройствами.
Компьютер 110 обычно содержит набор читаемых компьютером носителей информации. Читаемые компьютером носители информации могут быть любыми носителями информации, к которым может обращаться компьютер 110, и они включают в себя как энергозависимые, так и энергонезависимые носители информации, как съемные, так и стационарные носители информации. В качестве примера, но не ограничения, компьютерные носители информации могут включать в себя компьютерные носители информации и средства связи. Компьютерные носители информации включают как энергозависимые, так и энергонезависимые носители, как съемные, так и стационарные носители, реализованные любым методом или технологией для хранения информации, такой как машинные команды, структуры данных, программные модули или другие данные. Компьютерные носители информации включают в себя, но не в ограничительном смысле, оперативное запоминающее устройство (ОЗУ, RAM), постоянное запоминающее устройство (ПЗУ, ROM), электрически-стираемое программируемое ПЗУ (EEPROM), флэш-память или другую технологию памяти, постоянное запоминающее устройство на компакт-диске (CDROM), универсальный цифровой диск (DVD) или другие оптические дисковые накопители, магнитные кассеты, магнитную ленту, магнитный дисковый накопитель или другие магнитные запоминающие устройства, или любые другие средства, которые могут применяться для хранения необходимой информации, к которым компьютером 110 может быть осуществлен доступ. Средства связи обычно реализуют машинные команды, структуры данных, программные модули или другие данные в виде модулированных сигналов данных, таких как несущая или другой транспортный механизм, и включают в себя любые средства доставки информации. Термин "модулированный сигнал данных" означает сигнал, у которого одна или более характеристик установлены в определенное состояние или изменены таким образом, чтобы закодировать информацию в этом сигнале. В качестве примера, но не ограничения, средства связи включают в себя проводные средства, такие как проводные сети или прямые проводные соединения, и беспроводные средства, такие как акустические, высокочастотные (RF), инфракрасные и другие беспроводные средства. Комбинации всего вышеперечисленного следует также включить в область компьютерных носителей информации.
Системная память 130 включает в себя компьютерные запоминающие средства в форме энергозависимой и/или энергонезависимой памяти, такие как постоянное запоминающее устройство (ROM) 131 и оперативное запоминающее устройство (RAM) 132. Базовая система ввода/вывода 133 (BIOS), содержащая базовые процедуры, которые помогают передавать информацию между элементами внутри компьютера 110, например, в процессе запуска, обычно храниться в ROM 131. RAM 132 обычно содержит данные и/или программные модули, которые непосредственно доступны и/или в текущий момент обрабатываются процессорным устройством 120. В качестве примера, но не ограничения, Фиг.1 показывает операционную систему 134, прикладные программы 135, другие программные модули 136 и программные данные 137.
Компьютер 110 также может включать в себя другие съемные/стационарные, энергозависимые/энергонезависимые компьютерные запоминающие средства. В качестве примера, но не ограничения, Фиг.1 показывает накопитель на жестких дисках 140, который считывает с или записывает на стационарный энергонезависимый магнитный носитель, дисковод магнитных дисков 151, который считывает с или записывает на съемный энергонезависимый магнитный диск 152, и дисковод оптических дисков 155, который считывает с или записывает на съемный энергонезависимый оптический диск 156, такой как CD ROM (постоянное запоминающее устройство на компакт-диске) или другие оптические средства. Другие съемные/стационарные, энергозависимые/энергонезависимые компьютерные запоминающие средства, которые могут быть использованы в примере операционной среды, включают в себя, но не в ограничительном смысле, кассеты с магнитной лентой, платы (карты) с флэш-памятью, цифровые универсальные диски, цифровую видеоленту, твердотельные RAM, твердотельные ROM и т.п. Накопитель на жестких дисках 141 обычно присоединен к системной шине 121 посредством интерфейса стационарной памяти, такого как интерфейс 140, а дисковод магнитных дисков 151 и дисковод оптических дисков 155 обычно присоединены к системной шине 121 посредством интерфейса съемной памяти, такого как интерфейс 150.
Дисководы, накопители и связанные с ними компьютерные запоминающие средства, рассмотренные выше и показанные на Фиг.1, позволяют хранить машинные команды, структуры данных, программные модули и другие данные для компьютера 110. Например, на Фиг.1 показано, что на жестком диске 141 хранятся операционная система 134, прикладные программы 135, другие программные модули 136 и программные данные 137. Операционная система 144, прикладные программы 145, другие программные модули 146 и программные данные 147 обозначены на чертеже другими ссылочными позициями, чтобы показать, что, как минимум, они являются другими копиями. Пользователь может вводить команды и информацию в компьютер 20 посредством устройств ввода, таких как клавиатура 162 и указательное устройство 161, которое обычно является мышью, шаровым манипулятором или сенсорной панелью. Другими устройствами ввода (не показаны) могут быть микрофон, рычажный указатель (джойстик), игровой планшет, спутниковая параболическая антенна, сканнер и другие. Эти и другие устройства ввода часто присоединяются к процессорному устройству 120 с помощью интерфейса пользовательского ввода 160, который присоединен к системной шине, но могут подсоединяться с помощью других интерфейсов или каналов передачи информации (шин) другой структуры, таких как параллельный порт, игровой порт или универсальная последовательная шина (USB). Монитор 191 или устройство отображения другого типа также подсоединены к системной шине 121 через интерфейс, такой как видеоинтерфейс 190. В дополнение к монитору компьютеры могут также включать в себя другие периферийные устройства вывода, такие как громкоговорители 197 и принтер 196, которые могут быть подсоединены через периферийный интерфейс вывода 195.
Компьютер 110 может работать в сетевой среде, использующей логические соединения с одним или более удаленными компьютерами, такими как удаленный компьютер 180. Удаленный компьютер 180 может быть персональным компьютером, сервером, маршрутизатором, сетевым персональным компьютером, равноправным устройством или другой обычным сетевым узлом и обычно содержит многие или все элементы, описанные выше касательно компьютера 110, хотя на Фиг.1 показано только запоминающее устройство 181. Логические соединения, показанные на Фиг.1, включают в себя локальную сеть (LAN) 171 и глобальную сеть (WAN) 173, но могут также включать в себя другие сети. Такие сетевые среды являются обычным явлением в учреждениях, компьютерных сетях масштаба предприятия, во внутренних сетях (intranets) и в Интернете.
Когда компьютер 110 используется в среде локальной сети, он подсоединяется к локальной сети LAN 171 посредством сетевого интерфейса или адаптера 170. Когда компьютер 110 используется в среде глобальной сети, он обычно имеет модем 172 или другие средства для установки соединения через глобальную сеть WAN 173, такую как Интернет. Модем 172, который может быть внутренним или внешним, может подсоединяться к системной шине 121 посредством интерфейса пользовательского ввода 160 или другого подходящего механизма. В сетевой среде программные модули, изображенные в связи с компьютером 110 или его частями, могут храниться на удаленном запоминающем устройстве. В качестве примера, и не ограничения, FIG. 1 показывает удаленные прикладные программы 185, постоянно находящиеся на запоминающем устройстве 181. Важно принять во внимание, что показанные сетевые соединения являются лишь примерами и для установления линий каналов связи между компьютерами могут быть использованы другие средства.
Сервис лицензирования программного обеспечения
На Фиг.2 показан пример системы, которая предоставляет сервис 202 лицензирования программного обеспечения. Сервис 202 лицензирования программного обеспечения функционирует внутри компьютера 110 (показанного на Фиг.1). В одном примере сервис 202 лицензирования программного обеспечения является частью операционной системы, которая выполняется на компьютере 110. Сервис лицензирования программного обеспечения имеет хранилище 204 лицензий, в котором хранятся файлы лицензий для программных продуктов. Файлы лицензий могут, например, быть файлами, написанными на языке расширяемый язык описания прав XrML (eXtensible Rights Markup Language), в которых описаны права в отношении программных продуктов, и в которых также могут описываться различные типы условий в отношении применения этих прав. Программные средства 204 также содержат доверенное хранилище 206. Доверенное хранилище 206 сохраняет информацию, на которую невозможно влиять напрямую, и которая является динамически сохраняемыми данными, защищенными от несанкционированного вмешательства; доверенное хранилище 206 сохраняет информацию, которая используется в процессе проверки действительности лицензии. Например, определенные лицензии могут иметь срок окончания действия, и для того чтобы не дать обойти это условие с помощью перевода часов назад, можно периодически записывать текущее время (и истекшее время) в доверенное хранилище 206, чтобы знать, что часы все время идут вперед.
Сервис 202 лицензирования программного обеспечения управляет хранилищем 204 лицензий и доверенным хранилищем 206, а также выполняет различные функции, связанные с лицензированием программных продуктов. Например, сервис 202 лицензирования программного обеспечения может содержать модули, которые анализируют файлы лицензий, модули, которые контролируют привязку лицензий к конкретной машине и/или к конкретным копиям программных продуктов и к надежному таймеру/счетчику (который использует доверенное хранилище 206 способом, описанным выше).
Сервис 202 лицензирования программного обеспечения предоставляет интерфейс 208 прикладного программирования (API), который позволяет прикладным программам (таким как приложение 135) пользоваться сервисом 202 лицензирования программного обеспечения. Приложение 135 может использовать возможности сервиса 208 лицензирования программного обеспечения посредством обращения к методам из API 208, используя локальный вызов процедуры (LPC, local procedure call). Пример набора API методов, которые могут предоставляться сервисом 202 лицензирования программного обеспечения, описывается ниже.
Способ использования API 208 приложениями описывается с использованием Фиг.3. Сначала приложение выполняет API вызов (302). Затем сервис 202 обрабатывает (304) этот API вызов и возвращает результат этого API вызова приложению 306. Например, API вызов может запросить применить ("использовать") какое-либо право, содержащееся в лицензии, или запросить извлечь информацию из лицензии. Приложение затем получает результат API вызова и определяет, основываясь на этом результате, какое следует выбрать поведение (308). Другими словами, в предпочтительном воплощении, сервис 202 лицензирования программного обеспечения не навязывает непосредственно принудительное исполнение условий лицензии, а скорее предоставляет средства, с помощью которых лицензии могут быть организованны и использованы. Например, если приложение выполняет API вызов, чтобы использовать какое-либо право, и сервис 202 определяет, что не существует действительной лицензии, дающей это право, то сервис 202, в предпочтительном воплощении, не препятствует работе приложения, а вместо этого информирует это приложение, что соответствующее право не существует. Таким образом, приложение может использовать свои собственные механизмы, чтобы определить, что делать в ответ на то, что право не существует. Это свойство описываемого API предоставляет производителям программного обеспечения гибкость в решении как следует использовать средства лицензирования, предоставляемые сервисом 202. В другом воплощении приложение может зависеть от функциональности сервиса лицензий.
Пример API для лицензирования программного обеспечения
Ниже следует пример набора API методов, которые могут предоставляться сервисом лицензирования программного обеспечения (SL):
SLOpen
Функция SLOpen открывает описатель контекста клиента сервиса лицензий (SL клиента), который должен использоваться во всех дальнейших SL API вызовах (Во всем описании примера API SL указывает на сервис лицензирования программного обеспечения. Так описатель контекста SL клиента - это описатель, используемый клиентом при каждом обращении к сервису лицензирования программного обеспечения).
HRESULT
SLOpen(
CONST GUID* pguidApp,
HSLC* phSLC
);
Параметры
pguidApp
[вход] Указатель на GUID (глобально уникальный идентификатор) приложения, который однозначно идентифицирует приложение. Если этот аргумент равен NULL, то возвращается ошибка E_INVALIDARG.
phSLC
[выход] Описатель контекста SL клиента или INVALID_HANDLE_VALUE в случае неудачи.
Замечания
Чтобы закрыть описатель контекста, возвращенный функцией SLOpen, надо использовать SLClose.
GUID приложения - это уникальный ID (идентификатор) приложения. В наборе программ MICROSOFT OFFICE версии для WINDOWS, WinWord имеет GUID приложения, отличающийся от GUID приложения, принадлежащего Excel. Для Windows, Windows само является приложением, хотя оно является комбинацией из многих программ.
Пользователь может установить одновременно продукт Office и отдельный продукт WinWord на одной машине. С точки зрения сервиса лицензий программа WinWord в обоих продуктах имеет один и тот же GUID приложения. GUID приложения программы WinWord ассоциирован с двумя GUID продуктов. Другими словами, WinWord может использовать либо лицензию продукта Office, либо лицензию продукта WinWord.
При успешном вызове SLOpen:
Устанавливается RPC связывание. (RPC - удаленный вызов процедуры).
Сервисом лицензий выделяется память для контекста. Этот контекст используется, чтобы хранить информацию о состоянии вызывающего клиента.
Описатели контекста SL клиентов аналогичны описателям файлов. Процесс может открывать множество описателей контекста SL клиента, но описатели имеют смысл только в вызывающем процессе.
Возвращает
Успех или неудачу.
SLClose
Функция SLClose закрывает открытый описатель контекста SL клиента. Любая информация в контексте автоматически сбрасывается.
HRESULT
SLClose(
HSLC hSLC
);
Параметры
hSLC
[вход] Описатель текущего описателя контекста SL клиента.
Замечания
Когда SLClose завершается, RPC связывание сбрасывается и соответствующий контекст разрушается.
Возвращает
Успех или неудачу.
SLInstall
Функция SLInstall устанавливает лицензии приложений и регистрирует информацию приложений.
HRESULT
SLClose(
HSLC hSLC,
CONST SL_PRODKEY* pAppPrdKey,
DWORD dwNumOfApps,
CONST GUID* pguidApps,
DWORD dwNumOfLicFiles,
PCWSTR ppszLicFiles[],
BOOL bVerify
);
Параметры
hSLC
[вход] Описатель текущего описателя контекста SL клиента.
pAppPrdKey
[вход] Структура ключа программного продукта. Ключ программного продукта может иметь формат ключа продукта Майкрософт (MS) или формат ключа, определяемый приложением.
Typedef struct _tagSL_PRODKEY
{
DWORD cbSize; // Размер структуры SL_PRODKEY
DWORD dwVersion; // Версия структуры SL_PRODKEY
WCHAR szProdKey[MAX_PRODKEYSTR_SIZE+1];
SL_PRODKEY_TYPE eProdKeyType; // Тип ключа программного продукта
SL_CUSTOM_PRODKEY_INFO CustomPrdKeyInfo; // Информация о ключе продукта
} SL_PRODKEY;
Величина eProdKeyType может иметь одно из следующих значений:
SL_PRODKEY_CUSTOM
SL_PRODKEY_MS2002
SL_PRODKEY_MS2003
Если тип ключа продукта не является MS ключом продукта (то есть eProdKeyType=SL_PRODKEY_CUSTOM), то вызывающее приложение должно предоставить информацию о ключе продукта. Если приложение использует ключ продукта MS типа, то параметр CustomPrdKeyInfo можно игнорировать.
Typedef struct _tagSL_CUSTOM_PRODKEY_INFO
{
DWORD dwSKUID; // Уникальный ID для определенного SKU, например ID группы в MS PID.
DWORD dwSerialNumber; // Уникальный серийный номер, например, канал+последовательный номер в MS PID.
} SL_CUSTOM_PRODKEY_INFO;
Для SL_PRODKEY текущий номер версии равен 1. Вызывающая программа может использовать SL_CURRENT_PRODKEY_VERSION в поле dwVersion.
dwNumOfApps
[вход] Количество GUID приложений в pguidApps.
pguidApps
[вход] Список GUID приложений. GUID приложения представляет приложение, для которого устанавливается лицензия. Например, программа для установки Office может вызывать эту функцию, чтобы установить лицензию/лицензии для Word, Excel, указывая каждый GUID приложения в pguidApps. pguidApps не может здесь равняться NULL.
dwNumOfApps
[вход] Количество файлов лицензий.
ppszLicFile
[вход] Имена файлов в массиве строк.
Возвращает
Успех или неудачу.
SLUninstall
Функция SLUninstall удаляет лицензию продукта из приложения.
HRESULT SLUninstall (
HSLC hSLC,
CONST SL_PRODKEY* pAppPrdKey
);
Параметры
hSLC
[вход] Описатель текущего описателя контекста SL клиента.
pAppPrdKey
[вход] Определение приведено выше в связи с функцией SLInstall.
Замечания
Приложение может иметь более чем одну лицензию. Например, когда пользователь деинсталлирует пакет Office, ассоциацию между лицензиями для Office и WinWord следует удалить, однако лицензию отдельного продукта WinWord удалять не следует.
Если функция успешно завершается, то:
Информация, связанная с данным ключом продукта, удаляется (см. описание функции SLInstall выше для соответствующей информации).
Ключ продукта, ассоциированный с GUID приложения, удаляется.
Файлы лицензий, ассоциированные с этим GUID продукта, предпочтительно сохраняются.
Возвращает
Успех или неудача.
SLConsumeRight
Функция SLConsumeRight дает возможность приложениям проверять или использовать права, хранящиеся в локальных лицензиях. При вызове этой функции происходит связывание лицензии и права, на которое указывает pszRightName. Если это право не может быть использовано вызывающим приложением, тогда приложение отказывает в соответствующем действии. Если функция завершается успехом, то могут быть выполнены действия, связанные с этим правом (как, например, уменьшение счетчика использований, уменьшение временной квоты, или никаких действий не выполняется).
HRESULT SLConsumeRight(
HSLC hSLC,
PCWSTR pszRightName,
SL_ASYNC_CONTEXT* pAsyncContext
);
Параметры
hSLC
[вход] Описатель текущего описателя контекста SL клиента.
pszRightName
[вход] Имя права, которое нужно обработать. В настоящем исполнении имя права определяется приложениями. Сервис лицензий открывает лицензию и обрабатывает условие, определяемое именем права.
pAsyncContext
[вход/выход] Если pAsyncContext равен NULL, то функция работает в синхронном режиме, в противном случае функция работает в асинхронном режиме. SL_ASYNC_CONTEXT не видна вызывающей программе и управляется сервисом лицензий.
Замечания
Все лицензии, связанные с GUID приложения (определенном в SLOpen), будут концептуально объединены в одной логической лицензии.
Если имеется несколько лицензий, предоставляющих запрошенное право, то первой будет выбрана лицензия с наивысшим приоритетом.
Возвращает
Успех или неудачу.
SLInitializeAsyncContext
Функция SLInitializeAsyncContext инициализирует асинхронный контекст, чтобы функции сервиса лицензий могли делать асинхронные вызовы.
HRESULT SLInitializeAsyncContext(
SL_ASYNC_CONTEXT* pAsyncContext, // асинхронный контекст
HANDLE hEvent, // описатель события
PVOID pvReserved // резервный, NULL
);
Параметры
pAsyncContext
[вход/выход] указатель на асинхронный контекст, который содержит информацию для асинхронных вызовов.
hEvent
Объект события, используемый для синхронизации.
pvReserved
[вход] зарезервирован для расширения.
Возвращает
Успех или неудачу.
SLCancelAsyncCall
Функция SLCancelAsyncCall используется, чтобы отменить асинхронный вызов.
HRESULT SLCancelAsyncCall(
SL_ASYNC_CONTEXT* pAsyncContext, // асинхронный контекст
BOOL fAbortCall // немедленная отмена
);
pAsyncContext
[вход] асинхронный контекст для SL асинхронного вызова.
fAbortCall
[вход] Если TRUE, то вызов отменяется немедленно. Если FALSE, то ждет пока SL закончит вызов.
Замечания
Есть два способа для вызывающей программы потребовать отменить асинхронный вызов - прерывающий и непрерывающий. В случае прерывающей отмены (fAbortCall равен TRUE) функция SLCancelAsyncCall посылает уведомление сервису лицензий об отмене и асинхронный вызов немедленно отменяется без ожидания ответа от сервиса лицензий. В случае непрерывающей отмены (fAbortCall равен FALSE) функция SLCancelAsyncCall сообщает сервису лицензий об отмене и вызывающая программа ждет когда сервис лицензий завершит вызов.
Возвращает
Успех или неудачу.
SLCompleteAsyncCall
Функция SLCompleteAsyncCall используется, чтобы завершить SL асинхронный вызов.
HRESULT SLCompleteAsyncCall(
SL_ASYNC_CONTEXT* pAsyncContext, // асинхронный контекст
HRESULT* phrAsyncCall // ошибочный код сделанного асинхронного вызова
);
Параметры
pAsyncContext
[вход] асинхронный контекст для SL асинхронного вызова.
phrAsyncCall
[выход] код ошибки сделанного асинхронного вызова.
Замечания
Если программа вызывает эту функцию перед тем как придет ответ, то вызов возвращает E_SLC_ASYNC_CALL_PENDING. Буферный регистр должен быть действующим и быть достаточно большим, чтобы принять возвращенное значение. Если вызов не возвращает E_SLC_ASYNC_CALL_PENDING, то этот запуск SLCompleteAsyncCall конечный для асинхронного вызова. После вызова этой функции, независимо успешного или неудачного, все ресурсы, предназначенные для этого асинхронного вызова, освобождаются. (Последующие вызовы функций SLCompleteAsyncCall или SLCancelAsyncCall имеют неопределенные результаты до тех пор, пока не будет инициализирован новый вызов структуры SL_ASYNC_CONTEXT).
Возвращает
Значение Значение
S_OK Вызов был успешно завершен
E_SLC_INVALID_ASYNC_CONTEXT Недопустимый контекст асинхронного вызова
E_SLC_ASYNC_CALL_PENDING Вызов еще не завершился
E_SLC_CALL_CANCELLED Вызов был отменен
SLGetInformation
Функция SLGetInformation используется, чтобы получать разнообразную информацию.
HRESULT SLGetInformation(
HSLC hSLC, // Описатель контекста SL клиента
DWORD dwCategory, // Категория информации, которую нужно извлечь
PCWSTR pszKeyName, // Имя ключа
DWORD* pdwType, // Тип значения
SIZE_T* pcbValut, // Размер значения
PBYTE* ppbValue // Указатель на буфер значения
);
Параметры
hSLC
[вход] Описатель текущего описателя контекста SL клиента.
dwCategory
[вход] Категория информации.
Категория Значение
SL_CAT_RIGHTDATA Получить информацию из привязанного права. Перед получением этих данных из права лицензия должна быть успешно применена.
SL_CAT_DYNAMICPROPERTY Получить информацию, которая находится не в лицензии, а вычисляется в процессе работы программы. Например, RemainingGracePeriodDays. Это право должно быть получено перед вызовом. Имя ЗначенияRemainingGracePeriodDays: DWORD.
Льготный период может быть определен в лицензиях на ограниченное использование. Как только приложение установлено, время льготного использования начинает уменьшаться. Приложения могут проверять оставшееся время льготного использования после того как они получили соответствующую лицензию. ActivationStatus: DWORD. После того как приложения получат лицензию, они могут получить тип лицензии. Возвращаемое значение может быть: SL_LIC_OOB. Полученная лицензия - это лицензия на ограниченное использование SL_LIC_ACQUIRED. Полученная лицензия - это добросовестно приобретенная лицензия SL_LIC_NO. NE - лицензии нет
SL_CAT_SERVICEINFO Получить информацию, которая не зависит от лицензии. Вызывающая программа может получить информацию данной категории без обращения к лицензии. ИмяЗначениеSLVersion: DWORD. Версия сервиса лицензий. Формат 1.2.3.4 HWID: BINARY Текущий HWID.
SL_CAN_WINSOWSINFO Получить информацию, которая является свойством права, привязанного к Windows лицензии. Это для компонентного представления. Лицензия Windows уже получена сервисом лицензий, и сервис лицензий хранит свойства связанных с нею прав.
SL_CAT_ENUMLICINFO Когда функция SLEnumLicense вызвана и успешно завершена, вызывающая функция может запросить информацию пронумированной лицензии, используя эту категорию.
pszKeyName
[вход] Имя ключа. Например, BuildNumber
pdwType
[выход] тип данных
Значение Значение
SL_DATATYPE_SZ Строка в Юникоде
SL_DATATYPE_DWORD DWORD
SL_DATATYPE_BINARY Двоичное
pcbValue
[выход] Размер выделенного буфера (в байтах).
ppbValue
[выход] Если вызов успешный, то данные возвращаются в буфере, выделенном SLC. Вызывающее приложение должно вызвать SLFreeMemory, чтобы освободить память.
Возвращает
Успех или неудачу.
SLAcquireLicense
Функция SLAcquireLicense используется, чтобы получить лицензию для пользователя по сети. SLC перенумеровывает ключи продуктов, ассоциированные с приложением, и выбирает ключ продукта с наибольшим приоритетом продукта (см. SLInstall, информацию о регистрации). Затем SL получает из лицензии на ограниченное использование URL организации, распространяющей лицензии, и затем соединяется с этой организацией, чтобы получить лицензию.
Работа SLAcquireLicense может занять долгое время. Приложения могут вызывать эту функцию в асинхронном режиме, используя параметр pAsyncContext (NULL означает синхронный режим).
HRESULT SLAcquireLicense(
HSLC hSLC, // описатель контекста SL клиента
PCWSTR pszProdKeyHash, // хэш ключа продукта
PCWSTR pszPublishLicense, // строка издательской лицензии
SL_ASYNC_CONTEXT* pAsyncContext
);
Параметры
hSLC
[вход] Описатель текущего описателя контекста SL клиента.
pszProdKeyHash
[вход] строка хэша ключа продукта. Хэш ключа продукта создается при вызове SLInstall и поддерживается сервисом лицензий.
pszPublishingLicense
[вход] строка издательской лицензии
pAsyncContext
[вход] Асинхронный контекст для SL асинхронного вызова.
Замечания
Полученная лицензия будет храниться в хранилище лицензий, соответственно, и информация лицензии также будет зарегистрирована (см. SLInstall).
Приложениям может потребоваться добавить больше клиентской информации в лицензию. Приложение при вызове может передать эту информацию с помощью параметра pbAppData, и эти данные будут посланы организации, распространяющей лицензии.
Когда эта функция успешно завершается:
Она посылает необходимую информацию о связывании определенному серверу лицензий.
Получает лицензию от сервера лицензий.
Сохраняет лицензию в хранилище лицензий. См. описание SLInstall выше о том, как файл лицензий хранится.
Возвращает
Успех или неудачу.
SLGenerateTextChallenge
Создает текст запроса об инсталяции, который будет направлен поставщику лицензий иным способом (телефон, электронная почта, обмен файлами (file share) и т.п.).
HRESULT SLGenerateTextChallenge(
HSLC hSLC, // описатель контекста SL клиента
PCWSTR pszProdKeyHash, // строка хэша ключа продукта
BOOL fSingleSession, // для одного сеанса?
PWSTR *ppszChallenge // указатель на буфер для текста запроса
);
Параметры
hSLC
[вход] Описатель текущего описателя контекста SL клиента.
pszProdKeyHash
[вход] Строка хэша ключа продукта. Хэш ключа продукта создается при вызове SLInstall и поддерживается сервисом лицензий.
bSingleSession
[вход] Определяет, будет или нет соответствующий текстовый ответ поставщика лицензий иметь силу только в течение времени существования описателя контекста SL клиента этого сеанса.
ppszChallenge
[выход] При успешном завершении текст запроса возвращается в буфере, выделенном SLC. Вызывающая программа должна обратиться к SLFreeMemory, чтобы освободить выделенную память.
Возвращает
Успех или неудачу.
SLDepositTextResponse
Помещает отклик сервиса лицензий на текст запроса об инсталяции в систему лицензирования. Используется, чтобы активизировать лицензию с условным кодом доступа. Имеет смысл, только если имеется не получивший ответа текст запроса, который был произведен для лицензии. Если исходная лицензия указала, что этот запрос действителен только для единственного сеанса, то эта API функция должна быть вызвана с откликом до того как описатель контекста SL клиента будет закрыт, иначе вызов этой функции будет неудачным.
HRESULT LSDepositTextResponse(
HSLC hSLC, // описатель контекста SL клиента
PCWSTR pszProdKeyHash,
PWSTR pszResponse // Буфер, содержащий текст отклика
);
Параметры
hSLC
[вход] Описатель текущего описателя контекста SL клиента.
pszProdKeyHash
Строка хэша ключа продукта.
pszChallenge
[вход] Текст отклика.
Возвращает
Успех или неудачу.
SLEnumLicense
Функция SLEnumLicense используется, чтобы перенумеровать установленные лицензии и получить информацию из лицензии.
HRESULT (
HSLC hSLC, // описатель контекста SL клиента
CONST GUID* pguidApp, // GUID приложения
DWORD dwIndex // номер индекса
);
Параметры
hSLC
[вход] Описатель текущего описателя контекста SL клиента.
pguidApp
[вход] См. SLInstall. Если pguidApp не равен NULL, то нумеруются лицензии, ассоциированные с этим GUID. Если GUID равен NULL, то нумеруются все лицензии.
dwIndex
[вход] индекс лицензии, которую нужно извлечь. Эта величина должна быть ноль для первого вызова функции SLEnumLicense и затем увеличиваться для последующих вызовов.
Функция может возвращать лицензии в любом порядке.
Возвращает
E_SL_NO_MORE_DATA - нет лицензий с указанным индексом.
Замечания
Если функция SLEnumLicense успешно завершается, то информация выбранной лицензии может быть получена с помощью вызова SLGetInformation с категорией SL_CAT_ENUMLICINFO
Пример:
DWORD i=0;
PBYTE pbProductPriority=NULL;
PBYTE pbRemainingGracePeriodDays=NULL;
for (i=0;; i++)
{
EXIT_ON_ERROR(SLEnumLicense(hSLC, NULL, dwIndex));
if (E_SL_NO_MORE_DATA=SCODE(hr))
{
hr=S_OK
break;
}
EXIT_ON_ERROR(SLGetInformation (hSLC, SL_CAT_ENUMLIC, ``ProductPriority'', &dwType, &cbProductPriority, &pbProductPriority));
EXIT_ON_ERROR(SLGetInformation(hSLC, SL_CAT_ENUMLIC, ``RemainingGracePeriodDays'', &dwType, &cbRemainingGracePeriodDays, &pbRemainingGracePeriodDays));
Exit:
SLFreeMemory(pbProductPriority);
SLFreeMemory(pbRemainingGracePeriodDays);
}
SLFreeMemory
Функция SLFreeMemory используется, чтобы освободить память, выделенную SLC.
VOID SLFreeMemory(
PVOID pvMemblock, // указатель на память
);
Параметры
pvMemBlock
[вход] Ранее выделенный блок памяти, который нужно освободить.
Возвращает
Ничего.
Использование API сервиса лицензирования программного обеспечения для управления использованием программных продуктов
Программный продукт использует API, предложенный в данном изобретении, для различных целей, связанных с лицензированием, в том числе использования прав из лицензий, и извлечения данных из лицензий. Как отмечено выше, этот API позволяет программному продукту определять какие права представлены в лицензии, но предпочтительно, только сам программный продукт определяет, что делать с этой информацией - например разрешить или отказать в доступе к какой-либо функции либо полностью отклонить операцию и т.д. Следующее описание чертежей Фиг.4 и Фиг.5 показывает как API, предложенный в данном изобретении, используется программным продуктом.
Фиг.4 показывает пример процесса, посредством которого приложение "использует" право. Приложение вызывает метод SLConsumeRingt (402). Как обсуждалось выше, аргументы функции SLConsumeRingt включают описатель клиента, присвоенный сервисом лицензий, и имя права (которое присвоено производителем программного продукта, к которому относится это право). Сервис лицензий (сервис 202, показанный на Фиг.2) принимает вызов (404). Затем сервис находит лицензии, которые содержат указанное право, и проверяет корректность привязки и действительность лицензий. Как замечено выше, лицензии находятся в хранилище лицензий; если имеется более чем одна лицензия, относящаяся к программному продукту, который сделал вызов SLConsumeRingt, то может быть использовано правило приоритета, чтобы выбрать одну из подходящих лицензий. Проверка привязки означает определение того, что: (1) лицензия привязана к ключу программного продукта, определенного описателем клиента; и (2) лицензия привязана к машине, на которой этот программный продукт используется (или группе машин, членом которой является данная машина). Проверка действительности лицензии может включать определение того, что для данного права не истек срок действия (для лицензий, которые определяют сроки конца действия), и что не превышено максимальное число использований данного права (в случае, когда лицензия определяет максимальное число использований данного права (то есть "использований")).
Если определено, что лицензия и/или право корректно привязаны и действительны (408), то лицензия связывается с правом, запрошенным в API вызове (412) (Следует заметить, что "привязывание" лицензии к машине, среде, и ключу продукта означает, что лицензия определяет на какой машине/машинах и с каким ключом продукта она может использоваться; "привязывание" лицензии к праву означает, что функция "использовать право" завершилась успешно и соответствующее право найдено в какой-то лицензии. В настоящем описании будет ясно из контекста, какой смысл имеет слово "привязывание"). Затем API вызов возвращается вызывавшему приложению и сообщается, что вызов был успешным (414). Если было установлено, что лицензия и/или право недействительны или некорректно привязаны к машине, среде или ID продукта, то вызов SLConsumeRingt возвращается вызывающему приложению и указывает, что операция не удалась (410).
Если SLConsumeRingt возвращает неудачу, то право, определенное в вызове, не может быть получено из какой-либо лицензии и приложение не сможет получить никакой информации об этом праве. Однако если право найдено успешно, то приложение может использовать привязку этого права к лицензии, чтобы получить информацию из лицензии об этом праве. Например, лицензия может содержать общее право, называемое "запустить", которое означает, что приложение можно запускать. Однако для права "запустить" лицензия может содержать более специфичные параметры, относящиеся к использованию этого приложения, например лицензия может определить следует ли определенные возможности приложения (например, печатать, редактировать, сохранять и т.д.) включить или выключить и может указать специальные параметры, относящиеся к использованию этих возможностей (например, документ может быть сохранен только на машинах, которые работают в определенной области, или возможность печати может быть использована только в течение тридцати дней и т.д.). API сервиса лицензий не требует, чтобы информация какого-либо типа была ассоциирована с каким-либо правом, но скорее предоставляет механизм, посредством которого производитель приложения может ассоциировать любой тип информации с любым правом, которая затем может быть извлечена и использована приложением.
Предполагая, что право было успешно найдено, как описано на Фиг.4, приложение может затем получить информацию, ассоциированную с этим правом. Процесс получения этой информации описан на Фиг.5.
Сначала приложение вызывает метод SLGetInformation для привязанного права (502). Различные типы информации, которые могут быть извлечены, описаны выше в связи с описанием метода SLGetInformation. Затем сервис лицензий получает вызов (504). Сервис извлекает затребованную информацию из файла лицензии, который содержит это привязанное право (506). Затем сервис лицензий помещает эту информацию в буфер (508) и передает управление вызвавшему приложению (510). Вызывающее приложение затем читает содержимое буфера и выполняет все действия, которые, основываясь на извлеченной информации, оно считает необходимыми.
Следует заметить, что сервис лицензий не может знать смысл информации, которую он обрабатывает в процессе вызова SLGetInformation. Как обсуждалось выше, приведенная схема лицензирования дает механизм, посредством которого производители программного обеспечения могут создавать права и могут ассоциировать информацию с этими правами. Настоящее изобретение не ограничено также каким-либо особым типом информации, которая может быть ассоциирована с правом. После извлечения информации из лицензии эта информация просто передается в буфере сервисом лицензий приложению. Затем приложение интерпретирует извлеченную информацию, решает какие действия предпринять, основываясь на этой информации, и использует свои собственные средства защиты, чтобы привести в исполнение свои решения (Например, если, основываясь на полученной информации, приложение решит заблокировать возможность печати, то приложение содержит код, который действительно заблокирует эту функцию, и возможно код, который предотвратит взлом этой блокировки хакерами).
Следует заметить, что предшествующие примеры были приведены только с целью объяснения и никаким образом не должны быть истолкованы как ограничения настоящего изобретения. В то время как изобретение было описано по отношению к различным воплощениям, следует понимать, что слова, которые были здесь использованы, - только слова описания и иллюстрации, а не слова ограничений. Далее, хотя изобретение было описано здесь по отношению к конкретным средствам, материалам и воплощениям, не предполагается, что изобретение ограничено этими частностями, здесь описанными; скорее, изобретение распространяется на все функционально эквивалентные структуры, методы и использования, такие, которые находятся в области прилагаемой формулы изобретения. Люди, квалифицированные в компьютерных технологиях и познакомившиеся с этим изложением, могут осуществить множество модификаций изложенного, и изменения могут быть сделаны без отхода от области и сущности изобретения в его различных аспектах.

Claims (25)

1. Система для поддержки принудительного исполнения условия лицензии компьютерной программы, система включает в себя
компонент лицензирования, который содержит хранилище лицензий, в котором хранится лицензия, содержащая в себе право в отношении данного программного обеспечения, и набор данных, ассоциированный с указанным правом, причем компонент лицензирования предоставляет вызываемый интерфейс компьютерной программе, причем указанный вызываемый интерфейс включает в себя
метод использования права, который получает идентификатор указанного права от компьютерной программы и определяет, может ли право быть использовано; и
метод извлечения информации, который получает идентификатор указанного права от компьютерной программы и предоставляет указанный набор данных, или информацию, основанную на указанном наборе данных, компьютерной программе.
2. Система по п.1, в которой указанный компонент лицензирования может быть использован множеством компьютерных программ, причем компьютерная программа принадлежит к указанному множеству компьютерных программ, причем указанный интерфейс дополнительно содержит метод открытия описателя, который предоставляет описатель компьютерной программе; причем метод использования права получает этот описатель от компьютерной программы и использует этот описатель для того, чтобы идентифицировать компьютерную программу, от которой метод использования права получил вызов.
3. Система по п.1, в которой лицензия является одной из множества лицензий, которые хранятся в указанном хранилище лицензий, причем при вызове метода использования права компонент лицензирования выбирает лицензию, основываясь на одном или более факторах, включающих в себя: ассоциировано ли хранилище лицензий с компьютерной программой; и коллизионное правило, которое определяет, какую лицензию выбрать из множества лицензий, которые ассоциированы с компьютерной программой.
4. Система по п.1, в которой указанный интерфейс дополнительно включает в себя метод инициатор асинхронного контекста, который устанавливает контекст для асинхронной обработки и предоставляет идентификатор указанного контекста компьютерной программе; причем указанный метод использования права получает этот идентификатор указанного контекста от указанной компьютерной программы и обрабатывает запрос использования права асинхронно в ответ на получение идентификатора указанного контекста.
5. Система по п.1, в которой метод использования права определяет, может ли право быть использовано, основываясь на том, идентифицировано ли право в лицензии.
6. Система по п.1, в которой компьютерная программа и компонент лицензирования выполняются на машине, причем метод использования права определяет, может ли право быть использовано, основываясь на том, привязана ли лицензия к указанной машине.
7. Система по п.1, в которой компьютерная программа ассоциирована с идентификатором продукта, причем использование права определяет, может ли право быть использовано, основываясь на том, привязана ли лицензия к указанной машине или классу машин, для которого указанная машина является членом.
8. Способ ограничения использования компьютерной программы, ассоциированной с лицензией, причем лицензия определяет право в компьютерной программе, метод, включающий в себя вызов сервиса лицензий посредством выполнения первого вызова первого метода интерфейса указанного сервиса лицензий, причем указанный первый вызов параметризован идентификатором, ассоциированным с указанным правом; в ответ на указанный первый вызов получение указания в отношении того, может ли право быть использовано; и выбирая либо первого поведения, либо второго поведения в зависимости от этого указания.
9. Способ по п.8, в котором указанное первое поведение включает в себя разрешение компьютерной программе на выполнение, и где указанное второе поведение включает в себя прерывание выполнения компьютерной программы.
10. Способ по п.8, в котором указанное первое поведение включает в себя разрешение компьютерной программе выполнять первый набор функций, и где указанное второе поведение включает в себя разрешение компьютерной программе выполнять второй набор функций, которые не идентичны указанному первому набору функций.
11. Способ по п.8, в котором право ассоциировано с множеством данных, причем способ дополнительно содержит выполнение второго вызова второго метода указанного интерфейса, причем указанный второй метод параметризован идентификатором права; и в ответ на указанный второй вызов получение указанного множества данных.
12. Способ по п.11, дополнительно содержащий
направление работы компьютерной программы, основанное на указанном множестве данных.
13. Способ по п.8, дополнительно содержащий выполнение второго вызова второго метода указанного интерфейса; и в ответ на указанный второй вызов получение описателя; причем указанный второй вызов делается перед указанным первым вызовом, и причем указанный первый вызов дополнительно параметризован указанным описателем.
14. Способ по п.8, дополнительно содержащий выполнение второго вызова второго метода указанного интерфейса; и в ответ на указанный второй вызов получение асинхронного контекста; причем указанный второй вызов делается перед указанным первым вызовом, и причем указанный первый вызов дополнительно параметризован указанным асинхронным контекстом, и причем компьютерная программа выполняет, по меньшей мере, одно действие, пока первый вызов обрабатывается асинхронно.
15. Способ по п.8, в котором указанный первый метод определяет, может ли право быть использовано, основываясь на одном или более факторах включающих в себя: привязана ли лицензия к машине или среде, на которой компьютерная программа выполняется; привязана ли лицензия или право к идентификатору продукта, ассоциированному с компьютерной программой; истек ли срок действия лицензии или права; и было ли право использовано некоторое количество раз сверх права, установленного в лицензии.
16. Машиночитаемый носитель, содержащий закодированные машиноисполняемые команды для выполнения способа, реализующего принудительное исполнение условий лицензии компьютерной программы, метод содержащий
получение вызова первого метода от компьютерной программы, причем вызов первого метода идентифицирует право в компьютерной программе;
определение, что это право содержится в лицензии и может быть использовано; и
возвращение компьютерной программе указания того, что право может быть использовано.
17. Машиночитаемый носитель по п.16, в котором указание содержит привязку права к лицензии.
18. Машиночитаемый носитель по п.16, в котором указанное действие определения основано на том, задано ли право в лицензии.
19. Машиночитаемый носитель по п.16, в котором указанное действие определения основано на том, привязана ли лицензия к машине, на которой выполняется компьютерная программа.
20. Машиночитаемый носитель по п.16, в котором указанное действие определения основано на том, привязаны ли лицензия или право к компьютерной программе.
21. Машиночитаемый носитель по п.16, в котором указанное действие определения основано на том, не истек ли срок действия лицензии или права.
22. Машиночитаемый носитель по п.16, в котором указанное действие определения основано на том, не была ли лицензия использована число раз, превышающее предел.
23. Машиночитаемый носитель по п.16, в котором способ дополнительно содержит получение вызова второго метода от компьютерной программы; и в ответ на вызов второго метода возвращение описателя компьютерной программе, который идентифицирует компьютерную программу; причем указанный вызов первого метода выполняется после указанного вызова второго метода, и причем указанный вызов первого метода дополнительно идентифицирует указанный описатель.
24. Машиночитаемый носитель по п.16, в котором способ дополнительно содержит получение вызова второго метода от компьютерной программы; в ответ на вызов второго метода возвращение асинхронного контекста компьютерной программе, причем вызов первого метода выполняется после вызова второго метода и идентифицирует указанный асинхронный контекст; и выполнение вызова первого метода асинхронно, в то время пока компьютерная программа выполняет какое-либо действие.
25. Машиночитаемый носитель по п.16, в котором право ассоциировано с множеством данных, причем способ дополнительно того содержит получение вызова второго метода, который указывает право; и в ответ на указанный вызов второго метода предоставление множества данных компьютерной программе.
RU2004131031/09A 2003-10-24 2004-10-22 Программный интерфейс для лицензирования RU2377634C2 (ru)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/692,868 2003-10-24
US10/692,868 US10437964B2 (en) 2003-10-24 2003-10-24 Programming interface for licensing

Publications (2)

Publication Number Publication Date
RU2004131031A RU2004131031A (ru) 2006-04-10
RU2377634C2 true RU2377634C2 (ru) 2009-12-27

Family

ID=34394578

Family Applications (1)

Application Number Title Priority Date Filing Date
RU2004131031/09A RU2377634C2 (ru) 2003-10-24 2004-10-22 Программный интерфейс для лицензирования

Country Status (18)

Country Link
US (2) US10437964B2 (ru)
EP (1) EP1526427A3 (ru)
JP (1) JP4851703B2 (ru)
KR (1) KR101231266B1 (ru)
CN (1) CN100468325C (ru)
AU (1) AU2004216596B2 (ru)
BR (1) BRPI0404376A (ru)
CA (1) CA2482182C (ru)
CO (1) CO5630045A1 (ru)
IL (1) IL164074A (ru)
MX (1) MXPA04009395A (ru)
MY (1) MY153272A (ru)
NO (1) NO331572B1 (ru)
NZ (1) NZ535532A (ru)
RU (1) RU2377634C2 (ru)
SG (1) SG111200A1 (ru)
TW (1) TWI465935B (ru)
ZA (1) ZA200407586B (ru)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2628203C2 (ru) * 2012-01-27 2017-08-15 МАЙКРОСОФТ ТЕКНОЛОДЖИ ЛАЙСЕНСИНГ, ЭлЭлСи Лицензирование приложения с использованием поставщиков синхронизации

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030130953A1 (en) * 2002-01-09 2003-07-10 Innerpresence Networks, Inc. Systems and methods for monitoring the presence of assets within a system and enforcing policies governing assets
US10437964B2 (en) 2003-10-24 2019-10-08 Microsoft Technology Licensing, Llc Programming interface for licensing
US7921059B2 (en) * 2005-12-15 2011-04-05 Microsoft Corporation Licensing upsell
US20070143228A1 (en) * 2005-12-15 2007-06-21 Microsoft Corporation Licensing matrix
US20070250711A1 (en) * 2006-04-25 2007-10-25 Phonified Llc System and method for presenting and inputting information on a mobile device
EP1901190A1 (en) * 2006-09-15 2008-03-19 Sony DADC Austria AG Method and system for managing access to add-on data files
US11201868B2 (en) * 2006-10-23 2021-12-14 Nokia Technologies Oy System and method for adjusting the behavior of an application based on the DRM status of the application
US20080134348A1 (en) * 2006-12-05 2008-06-05 Microsoft Corporation Conditional policies in software licenses
KR101389928B1 (ko) 2007-01-30 2014-04-30 삼성전자주식회사 상호 배제 기능을 수행하기 위한 방법 및 이를 이용한drm 디바이스
US20090228904A1 (en) * 2008-03-04 2009-09-10 Microsoft Corporation Declarative support for asynchronous methods
JP5065100B2 (ja) * 2008-03-05 2012-10-31 京セラドキュメントソリューションズ株式会社 ライセンス管理システムおよびライセンス管理プログラム
JP5084577B2 (ja) 2008-03-24 2012-11-28 株式会社ソニー・コンピュータエンタテインメント 情報処理装置
US8538889B2 (en) * 2008-06-25 2013-09-17 Microsoft Corporation Application hierarchy and state manipulation
US8935528B2 (en) * 2008-06-26 2015-01-13 Microsoft Corporation Techniques for ensuring authentication and integrity of communications
CN101534319B (zh) * 2008-11-11 2012-01-04 全旅通(北京)信息服务有限公司 一种解除指令间依赖关系的方法、系统和代理服务器
US9424399B2 (en) 2009-05-12 2016-08-23 Microsoft Technology Licensing, Llc Availability of permission models in roaming environments
US20100293103A1 (en) * 2009-05-12 2010-11-18 Microsoft Corporation Interaction model to migrate states and data
US20100293536A1 (en) * 2009-05-12 2010-11-18 Microsoft Corporation Enhanced product functionality based on user identification
JP5633302B2 (ja) * 2010-10-22 2014-12-03 株式会社リコー 情報管理装置、情報管理プログラム及び情報管理システム
EP2648125B1 (de) * 2012-03-05 2014-11-19 Steinberg Media Technologies GmbH Verfahren zur Autorisierung eines Programmablaufs
US10242164B2 (en) 2015-10-19 2019-03-26 Microsoft Technology Licensing, Llc Managing application specific feature rights
US20170213305A1 (en) * 2016-01-21 2017-07-27 Blackberry Limited Distribution of licenses for a third-party service operating in association with a licensed first-party service
CN106934254B (zh) * 2017-02-15 2020-05-26 中国银联股份有限公司 一种开源许可证的分析方法及装置
US11663337B2 (en) * 2018-07-20 2023-05-30 George Mason University Methods and systems for system call reduction
CA3143247A1 (en) * 2019-06-11 2020-12-17 Net-Thunder, Llc Automatically deployed information technology (it) system and method with enhanced security

Family Cites Families (297)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5847820B2 (ja) 1975-12-17 1983-10-25 株式会社日立製作所 カラ−ジユゾウカン
US5023907A (en) 1988-09-30 1991-06-11 Apollo Computer, Inc. Network license server
US5155806A (en) 1989-03-15 1992-10-13 Sun Microsystems, Inc. Method and apparatus for displaying context sensitive help information on a display
GB8918553D0 (en) 1989-08-15 1989-09-27 Digital Equipment Int Message control system
US5287514A (en) 1990-01-08 1994-02-15 Microsoft Corporation Method and system for customizing a user interface in a computer system
JP3270102B2 (ja) * 1991-03-11 2002-04-02 ヒューレット・パッカード・カンパニー ライセンス付与方法及びシステム
EP0538453B1 (en) 1991-05-08 1999-02-03 Digital Equipment Corporation Management interface and format for license management system
WO1992020021A1 (en) 1991-05-08 1992-11-12 Digital Equipment Corporation License management system
US5204897A (en) * 1991-06-28 1993-04-20 Digital Equipment Corporation Management interface for license management system
JP2967961B2 (ja) 1991-12-16 1999-10-25 インターナショナル・ビジネス・マシーンズ・コーポレイション 月別の予定表表示の提示方法
US5519606A (en) 1992-01-21 1996-05-21 Starfish Software, Inc. System and methods for appointment reconciliation
JPH0785216B2 (ja) 1992-02-07 1995-09-13 インターナショナル・ビジネス・マシーンズ・コーポレイション メニュー表示装置および方法
US5416895A (en) 1992-04-08 1995-05-16 Borland International, Inc. System and methods for improved spreadsheet interface with user-familiar objects
US5544295A (en) 1992-05-27 1996-08-06 Apple Computer, Inc. Method and apparatus for indicating a change in status of an object and its disposition using animation
US6236396B1 (en) 1992-05-27 2001-05-22 Apple Computer, Inc. Method and apparatus for controlling a scheduler
US5570109A (en) 1992-05-27 1996-10-29 Apple Computer, Inc. Schedule and to-do list for a pen-based computer system
US5659693A (en) 1992-08-27 1997-08-19 Starfish Software, Inc. User interface with individually configurable panel interface for use in a computer system
US5734915A (en) 1992-11-25 1998-03-31 Eastman Kodak Company Method and apparatus for composing digital medical imagery
US5500936A (en) 1993-03-12 1996-03-19 Asymetrix Corporation Multi-media slide presentation system with a moveable, tracked popup menu with button and title bars
US5588107A (en) 1993-03-22 1996-12-24 Island Graphics Corporation Method and apparatus for selectably expandable menus
JPH06342357A (ja) 1993-06-01 1994-12-13 Mitsubishi Electric Corp ユーザインタフェース方式
US5634128A (en) 1993-09-24 1997-05-27 International Business Machines Corporation Method and system for controlling access to objects in a data processing system
US5495411A (en) 1993-12-22 1996-02-27 Ananda; Mohan Secure software rental system using continuous asynchronous password verification
EP0870120A1 (en) 1994-02-08 1998-10-14 PLASTIC BEARINGS & HOUSINGS AUSTRALASIA PTY.LTD. Plain bearing
EP0742918B1 (en) 1994-03-21 1997-10-15 Object Technology Licensing Corp. Apparatus and method for document processing
US5563946A (en) * 1994-04-25 1996-10-08 International Business Machines Corporation Method and apparatus for enabling trial period use of software products: method and apparatus for passing encrypted files between data processing systems
US6404433B1 (en) 1994-05-16 2002-06-11 Apple Computer, Inc. Data-driven layout engine
WO1995031773A1 (en) 1994-05-16 1995-11-23 Apple Computer, Inc. Switching between appearance/behavior themes in graphical user interfaces
US5555364A (en) 1994-08-23 1996-09-10 Prosoft Corporation Windowed computer display
WO1996009579A1 (en) 1994-09-22 1996-03-28 Izak Van Cruyningen Popup menus with directional gestures
US5588108A (en) 1994-09-27 1996-12-24 Micrografx, Inc. System and method for generating graphics charts
US5721847A (en) 1994-10-21 1998-02-24 Microsoft Corporation Method and system for linking controls with cells of a spreadsheet
JPH08263438A (ja) 1994-11-23 1996-10-11 Xerox Corp ディジタルワークの配給及び使用制御システム並びにディジタルワークへのアクセス制御方法
US5629980A (en) * 1994-11-23 1997-05-13 Xerox Corporation System for controlling the distribution and use of digital works
US5625783A (en) 1994-12-13 1997-04-29 Microsoft Corporation Automated system and method for dynamic menu construction in a graphical user interface
US5831606A (en) 1994-12-13 1998-11-03 Microsoft Corporation Shell extensions for an operating system
US5748964A (en) 1994-12-20 1998-05-05 Sun Microsystems, Inc. Bytecode program interpreter apparatus and method with pre-verification of data type restrictions
US5760773A (en) 1995-01-06 1998-06-02 Microsoft Corporation Methods and apparatus for interacting with data objects using action handles
US5893125A (en) 1995-01-27 1999-04-06 Borland International, Inc. Non-modal database system with methods for incremental maintenance
US5664208A (en) 1995-05-16 1997-09-02 Apple Computer, Inc. Methods and apparatuses for seamless compound document processing
US5778402A (en) 1995-06-07 1998-07-07 Microsoft Corporation Method and system for auto-formatting a document using an event-based rule engine to format a document as the user types
US5619631A (en) 1995-06-07 1997-04-08 Binaryblitz Method and apparatus for data alteration by manipulation of representational graphs
US5940847A (en) 1995-06-07 1999-08-17 Microsoft Corporation System and method for automatically correcting multi-word data entry errors
US5671412A (en) * 1995-07-28 1997-09-23 Globetrotter Software, Incorporated License management system for software applications
US5634100A (en) 1995-08-07 1997-05-27 Apple Computer, Inc. System and method for event parameter interdependence and adjustment with pen input
US5778404A (en) 1995-08-07 1998-07-07 Apple Computer, Inc. String inserter for pen-based computer systems and method for providing same
JP2986078B2 (ja) 1995-08-28 1999-12-06 インターナショナル・ビジネス・マシーンズ・コーポレイション カレンダーの表示方法及び表示装置
US5821936A (en) 1995-11-20 1998-10-13 Siemens Business Communication Systems, Inc. Interface method and system for sequencing display menu items
US20010011253A1 (en) * 1998-08-04 2001-08-02 Christopher D. Coley Automated system for management of licensed software
US5855006A (en) 1996-03-01 1998-12-29 Humware Personal activity scheduling apparatus
US5838321A (en) 1996-05-06 1998-11-17 Ast Research, Inc. User interface with embedded objects for personal computers and the like
US6493006B1 (en) 1996-05-10 2002-12-10 Apple Computer, Inc. Graphical user interface having contextual menus
US5933841A (en) 1996-05-17 1999-08-03 Ameritech Corporation Structured document browser
WO1997046962A1 (en) 1996-06-07 1997-12-11 At & T Corp. Finding an e-mail message to which another e-mail message is a response
US6085206A (en) 1996-06-20 2000-07-04 Microsoft Corporation Method and system for verifying accuracy of spelling and grammatical composition of a document
US6073108A (en) 1996-06-21 2000-06-06 Paul, Hastings, Janofsky & Walker Task-based classification and analysis system
US5899979A (en) 1996-07-22 1999-05-04 International Business Machines Corporation Method and system for automatically integrating scheduled work items onto an electronic calendar
US5828376A (en) 1996-09-23 1998-10-27 J. D. Edwards World Source Company Menu control in a graphical user interface
US6018343A (en) 1996-09-27 2000-01-25 Timecruiser Computing Corp. Web calendar architecture and uses thereof
US5842009A (en) 1996-09-30 1998-11-24 Apple Computer, Inc. System for automatically retrieving information relevant to a user's scheduled event
US5926806A (en) 1996-10-18 1999-07-20 Apple Computer, Inc. Method and system for displaying related information from a database
EP0932865B1 (en) 1996-10-25 2002-08-14 SCHLUMBERGER Systèmes Using a high level programming language with a microcontroller
JP3383170B2 (ja) 1996-10-29 2003-03-04 株式会社東芝 消費電力制限機能つきプロセッサ
US6012075A (en) 1996-11-14 2000-01-04 Microsoft Corporation Method and system for background grammar checking an electronic document
EP0847019A1 (en) 1996-12-04 1998-06-10 Koninklijke Philips Electronics N.V. Method and system for selecting an information item in an information processing system, and local station in such a system
US7248150B2 (en) 1997-01-29 2007-07-24 Directed Electronics, Inc. Menu-driven remote control transmitter
US5999938A (en) 1997-01-31 1999-12-07 Microsoft Corporation System and method for creating a new data structure in memory populated with data from an existing data structure
US6034683A (en) 1997-03-26 2000-03-07 Netscape Communications Corporation Time line for desktop metaphor
WO1998044407A1 (en) 1997-03-28 1998-10-08 Sun Microsystems, Inc. Method and apparatus for configuring sliding panels
US6118480A (en) 1997-05-05 2000-09-12 Flashpoint Technology, Inc. Method and apparatus for integrating a digital camera user interface across multiple operating modes
EP0881559B1 (en) 1997-05-28 2003-08-20 Siemens Aktiengesellschaft Computer system for protecting software and a method for protecting software
US5940078A (en) 1997-06-17 1999-08-17 Sun Microsystems, Inc. Method and apparatus for changing the appearance of icon images on a computer display monitor
DE19730112A1 (de) 1997-07-14 1999-01-21 Ericsson Telefon Ab L M Empfangs- und Speichervorrichtung für Übertragungseinheiten
US6384849B1 (en) 1997-07-14 2002-05-07 Microsoft Corporation Method for displaying controls in a system using a graphical user interface
US6188995B1 (en) * 1997-07-28 2001-02-13 Apple Computer, Inc. Method and apparatus for enforcing software licenses
GB2328539B (en) 1997-08-22 2001-04-18 Ibm Data charting
US6882354B1 (en) 1997-09-17 2005-04-19 Sun Microsystems, Inc. Scroll bars with user feedback
JP2001517822A (ja) 1997-09-19 2001-10-09 パク,ヒョ,ジョーン 独立的ソフトウェア登録サーバを利用したソフトウェア使用権管理システム
US6433801B1 (en) 1997-09-26 2002-08-13 Ericsson Inc. Method and apparatus for using a touch screen display on a portable intelligent communications device
US6289502B1 (en) 1997-09-26 2001-09-11 Massachusetts Institute Of Technology Model-based software design and validation
CA2309132A1 (en) 1997-10-06 1999-04-15 Megg Associates, Inc. Single-document active user interface, method and system for implementing same
US5970466A (en) 1997-10-06 1999-10-19 Impromed, Inc. Graphical computer system and method for appointment scheduling
US6121965A (en) 1997-10-17 2000-09-19 Lucent Technologies Inc. User interface for graphical application tool
JP3377419B2 (ja) 1997-11-11 2003-02-17 インターナショナル・ビジネス・マシーンズ・コーポレーション 命令列生成方法及び装置、変換方法、及びコンピュータ
US6289505B1 (en) 1997-11-18 2001-09-11 Sun Microsystems, Inc. Method, apparatus and computer programmed product for binary re-optimization using a high level language compiler
US6216122B1 (en) 1997-11-19 2001-04-10 Netscape Communications Corporation Electronic mail indexing folder having a search scope and interval
US6188403B1 (en) 1997-11-21 2001-02-13 Portola Dimensional Systems, Inc. User-friendly graphics generator using direct manipulation
US5898436A (en) 1997-12-05 1999-04-27 Hewlett-Packard Company Graphical user interface for digital image editing
US5960406A (en) 1998-01-22 1999-09-28 Ecal, Corp. Scheduling system for use between users on the web
US6211879B1 (en) 1999-01-13 2001-04-03 Planetweb, Inc. System and method for navigating in multiple windows
JP2938420B2 (ja) 1998-01-30 1999-08-23 インターナショナル・ビジネス・マシーンズ・コーポレイション ファンクション選択方法及び装置、ファンクションを選択するための制御プログラムを格納した記憶媒体、オブジェクトの操作方法及び装置、オブジェクトを操作するための制御プログラムを格納した記憶媒体、複合アイコンを格納した記憶媒体
US6385596B1 (en) * 1998-02-06 2002-05-07 Liquid Audio, Inc. Secure online music distribution system
US6219670B1 (en) 1998-02-18 2001-04-17 International Business Machines Corporation Method and apparatus for filtering a table list before opening with a graphical user interface
US6067087A (en) 1998-03-03 2000-05-23 Microsoft Corporation Method for building menus during idle times
US6189146B1 (en) 1998-03-18 2001-02-13 Microsoft Corporation System and method for software licensing
GB2335822B (en) 1998-03-25 2003-09-10 Nokia Mobile Phones Ltd Context sensitive pop-up window for a portable phone
US6173316B1 (en) 1998-04-08 2001-01-09 Geoworks Corporation Wireless communication device with markup language based man-machine interface
US6226747B1 (en) 1998-04-10 2001-05-01 Microsoft Corporation Method for preventing software piracy during installation from a read only storage medium
US6115777A (en) * 1998-04-21 2000-09-05 Idea Corporation LOADRS instruction and asynchronous context switch
US6175363B1 (en) 1998-05-29 2001-01-16 Hewlett-Packard Company Method and system to provide functionality access based on user approach to network and system management tasks
US6301704B1 (en) 1998-06-16 2001-10-09 Silicon Graphics, Inc. Method, system, and computer program product for using static single assignment form as a program representation and a medium for performing global scalar optimization
US6133915A (en) 1998-06-17 2000-10-17 Microsoft Corporation System and method for customizing controls on a toolbar
US6101480A (en) 1998-06-19 2000-08-08 International Business Machines Electronic calendar with group scheduling and automated scheduling techniques for coordinating conflicting schedules
US6727919B1 (en) 1998-07-07 2004-04-27 International Business Machines Corporation Flexible mouse-driven method of user interface
US6414700B1 (en) 1998-07-21 2002-07-02 Silicon Graphics, Inc. System for accessing a large number of menu items using a zoned menu bar
US6307544B1 (en) 1998-07-23 2001-10-23 International Business Machines Corporation Method and apparatus for delivering a dynamic context sensitive integrated user assistance solution
US6359634B1 (en) 1998-08-25 2002-03-19 International Business Machines Corporation Method and computer program product for graphical user interface (GUI) organization control for extending GUI applications
GB2341052B (en) 1998-08-26 2003-05-14 Nokia Mobile Phones Ltd Wireless communication terminal
US6166738A (en) 1998-09-14 2000-12-26 Microsoft Corporation Methods, apparatus and data structures for providing a user interface, which exploits spatial memory in three-dimensions, to objects
US6373507B1 (en) 1998-09-14 2002-04-16 Microsoft Corporation Computer-implemented image acquistion system
US6232971B1 (en) 1998-09-23 2001-05-15 International Business Machines Corporation Variable modality child windows
US6480865B1 (en) 1998-10-05 2002-11-12 International Business Machines Corporation Facility for adding dynamism to an extensible markup language
US7107548B2 (en) 1998-10-28 2006-09-12 Yahoo! Inc. Method of controlling an internet browser interface and a controllable browser interface
US6305012B1 (en) 1998-12-03 2001-10-16 International Business Machines Corporation Method and apparatus for dynamic selection of instructions for compiling using tags
US20030097361A1 (en) 1998-12-07 2003-05-22 Dinh Truong T Message center based desktop systems
US6546417B1 (en) 1998-12-10 2003-04-08 Intellinet, Inc. Enhanced electronic mail system including methods and apparatus for identifying mime types and for displaying different icons
US6353451B1 (en) 1998-12-16 2002-03-05 Intel Corporation Method of providing aerial perspective in a graphical user interface
US6635089B1 (en) 1999-01-13 2003-10-21 International Business Machines Corporation Method for producing composite XML document object model trees using dynamic data retrievals
US6493731B1 (en) 1999-01-27 2002-12-10 Xerox Corporation Document management system for recording and viewing the history of document use
US6459441B1 (en) 1999-03-03 2002-10-01 Dassault Systemes Software interface
US6369840B1 (en) 1999-03-10 2002-04-09 America Online, Inc. Multi-layered online calendaring and purchasing
US6429882B1 (en) 1999-03-15 2002-08-06 Sun Microsystems, Inc. User interface component
US6308322B1 (en) 1999-04-06 2001-10-23 Hewlett-Packard Company Method and apparatus for reduction of indirect branch instruction overhead through use of target address hints
US6466236B1 (en) 1999-04-08 2002-10-15 Palm, Inc. System and method for displaying and manipulating multiple calendars on a personal digital assistant
US6587881B1 (en) * 1999-04-09 2003-07-01 Microsoft Corporation Software server usage governor
US6697948B1 (en) * 1999-05-05 2004-02-24 Michael O. Rabin Methods and apparatus for protecting information
JP2001034775A (ja) 1999-05-17 2001-02-09 Fuji Photo Film Co Ltd 履歴画像表示方法
US7100112B1 (en) 1999-05-20 2006-08-29 Microsoft Corporation Dynamic properties of documents and the use of these properties
EP1208150A4 (en) 1999-06-11 2005-01-26 Sydney Hyman IMAGE FORMING MATERIAL
US6691281B1 (en) 1999-06-15 2004-02-10 Microsoft Corporation Publishing/republishing data tables in HTML documents while maintaining formatting and functionality for restoring back the data tables
US6456304B1 (en) 1999-06-30 2002-09-24 Microsoft Corporation Procedural toolbar user interface
US6621504B1 (en) 1999-08-06 2003-09-16 Avid Technology, Inc. Editor for effect tree parameters
EP1076279A1 (en) * 1999-08-13 2001-02-14 Hewlett-Packard Company Computer platforms and their methods of operation
US8015049B1 (en) 1999-08-18 2011-09-06 S.F. Ip Properties 61 Llc On-line appointment system
US6538673B1 (en) 1999-08-23 2003-03-25 Divine Technology Ventures Method for extracting digests, reformatting, and automatic monitoring of structured online documents based on visual programming of document tree navigation and transformation
GB2353679A (en) 1999-08-25 2001-02-28 Ibm Prioritized display of messages
US6405216B1 (en) 1999-09-17 2002-06-11 International Business Machines Corporation Internet-based application program interface (API) documentation interface
US6732330B1 (en) 1999-09-30 2004-05-04 International Business Machines Corporation Scripting language blocks to support multiple scripting languages in a single web page
US7082567B1 (en) 1999-10-18 2006-07-25 Rose Blush Software Llc Enhanced human computer user interface system for searching and browsing documents
US6578192B1 (en) 1999-10-20 2003-06-10 International Business Machines Corporation Method and system for supporting dynamic document content expressed in a component-level language
US7152207B1 (en) 1999-11-05 2006-12-19 Decentrix Inc. Method and apparatus for providing conditional customization for generating a web site
US6734880B2 (en) 1999-11-24 2004-05-11 Stentor, Inc. User interface for a medical informatics systems
US6924797B1 (en) 1999-11-30 2005-08-02 International Business Machines Corp. Arrangement of information into linear form for display on diverse display devices
US20030088516A1 (en) * 1999-12-21 2003-05-08 Eric B. Remer Software anti-piracy licensing
US6686938B1 (en) 2000-01-05 2004-02-03 Apple Computer, Inc. Method and system for providing an embedded application toolbar
US6904449B1 (en) 2000-01-14 2005-06-07 Accenture Llp System and method for an application provider framework
US6621508B1 (en) 2000-01-18 2003-09-16 Seiko Epson Corporation Information processing system
ATE364874T1 (de) 2000-04-07 2007-07-15 Viatech Technologies Inc System und eingebetteter lizenzsteuerungsmechanismus für die erzeugung und verteilung von dateien mit digitalem inhalt sowie erzwingung von lizenziertem gebrauch von dateien mit digitalem inhalt
US6618732B1 (en) 2000-04-11 2003-09-09 Revelink, Inc. Database query handler supporting querying of textual annotations of relations between data objects
US20030206646A1 (en) 2000-04-24 2003-11-06 Brackett Charles C. Imaging system having means for creating, managing and selecting from list of exam descriptions
US7249325B1 (en) 2000-05-11 2007-07-24 Palmsource, Inc. Automatically centered scrolling in a tab-based user interface
US6785868B1 (en) 2000-05-31 2004-08-31 Palm Source, Inc. Method and apparatus for managing calendar information from a shared database and managing calendar information from multiple users
US7346848B1 (en) 2000-06-21 2008-03-18 Microsoft Corporation Single window navigation methods and systems
US7111238B1 (en) 2000-06-23 2006-09-19 Microsoft Corporation System and method for maintaining text formatting consistency within an electronic document
WO2002005079A2 (en) 2000-07-07 2002-01-17 Openwave Systems, Inc. Graphical user interface features of a browser in a hand-held wireless communication device
US7178098B2 (en) 2000-07-13 2007-02-13 International Business Machines Corporation Method and system in an electronic spreadsheet for handling user-defined options in a copy/cut—paste operation
US6583798B1 (en) 2000-07-21 2003-06-24 Microsoft Corporation On-object user interface
US6871195B2 (en) 2000-09-13 2005-03-22 E-Promentor Method and system for remote electronic monitoring and mentoring of computer assisted performance support
JP3530475B2 (ja) 2000-09-25 2004-05-24 三洋電機株式会社 折畳式通信端末装置および情報表示方法
US6988241B1 (en) 2000-10-16 2006-01-17 International Business Machines Corporation Client side, web-based spreadsheet
US6825859B1 (en) 2000-11-13 2004-11-30 Corel Corporation System and method for processing content changes of on-screen items
US7020848B2 (en) 2000-12-20 2006-03-28 Eastman Kodak Company Comprehensive, multi-dimensional graphical user interface using picture metadata for navigating and retrieving pictures in a picture database
US6925605B2 (en) 2000-12-28 2005-08-02 International Business Machines Corporation Collating table for email
US7266768B2 (en) 2001-01-09 2007-09-04 Sharp Laboratories Of America, Inc. Systems and methods for manipulating electronic information using a three-dimensional iconic representation
US6801227B2 (en) 2001-01-16 2004-10-05 Siemens Medical Solutions Health Services Inc. System and user interface supporting user navigation and concurrent application operation
US20020149623A1 (en) 2001-01-26 2002-10-17 Alan West State and data driven dynamic menu and toolbar architecture
EP1360597A4 (en) 2001-02-15 2005-09-28 Suffix Mail Inc E-MAIL MESSAGING SYSTEM
US7110936B2 (en) 2001-02-23 2006-09-19 Complementsoft Llc System and method for generating and maintaining software code
US6906717B2 (en) 2001-02-27 2005-06-14 Microsoft Corporation Multiple chart user interface
US20020133557A1 (en) 2001-03-03 2002-09-19 Winarski Donna Ilene Robinson Sorting e-mail
US6964025B2 (en) 2001-03-20 2005-11-08 Microsoft Corporation Auto thumbnail gallery
EP1243998B1 (en) 2001-03-21 2017-04-19 Excalibur IP, LLC A technique for license management and online software license enforcement
GB2373604B (en) 2001-03-23 2004-10-27 Ibm A method and system for controlling use of software programs
US7174514B2 (en) 2001-03-28 2007-02-06 Siebel Systems, Inc. Engine to present a user interface based on a logical structure, such as one for a customer relationship management system, across a web site
TW502180B (en) 2001-03-30 2002-09-11 Ulead Systems Inc Previewing method of editing multimedia effect
KR20030022819A (ko) 2001-04-19 2003-03-17 마쯔시다덴기산교 가부시키가이샤 라이선스 관리 시스템, 라이선스 관리장치, 중계장치 및단말장치
US20030098891A1 (en) 2001-04-30 2003-05-29 International Business Machines Corporation System and method for multifunction menu objects
US20020163538A1 (en) 2001-05-07 2002-11-07 Koninklijke Philips Electronics N.V. Electronic mail guide
US7039647B2 (en) 2001-05-10 2006-05-02 International Business Machines Corporation Drag and drop technique for building queries
US7334196B2 (en) 2001-06-25 2008-02-19 Siemens Medical Solutions Health Services Corporation User interface display navigation and item selection system
US6826729B1 (en) 2001-06-29 2004-11-30 Microsoft Corporation Gallery user interface controls
US20030011638A1 (en) 2001-07-10 2003-01-16 Sun-Woo Chung Pop-up menu system
US7620911B2 (en) 2001-07-12 2009-11-17 Autodesk, Inc. Collapsible dialog window
US7251776B2 (en) 2001-07-13 2007-07-31 Netview Technologies, Inc. System and method for efficiently and flexibly utilizing spreadsheet information
US20030066025A1 (en) 2001-07-13 2003-04-03 Garner Harold R. Method and system for information retrieval
GB2377858B (en) 2001-07-19 2005-04-20 Inventec Appliances Corp Method for simplifying cellular phone menu selection
US6999068B2 (en) 2001-08-21 2006-02-14 Hewlett-Packard Development Company, L.P. System and method for enabling users to edit graphical images
US7046848B1 (en) 2001-08-22 2006-05-16 Olcott Peter L Method and system for recognizing machine generated character glyphs and icons in graphic images
EP1436693A2 (en) * 2001-08-29 2004-07-14 Globespanvirata, Inc. Key interface for secure object manipulation
US20030043211A1 (en) 2001-09-05 2003-03-06 Kremer Karl Heinz Image-forming system having a graphic user interface with print option representation using thumbnail images
US20030076957A1 (en) * 2001-10-18 2003-04-24 Nadarajah Asokan Method, system and computer program product for integrity-protected storage in a personal communication device
JP2003141020A (ja) 2001-10-31 2003-05-16 Toshiba Tec Corp 情報保管出力システム及び情報保管出力サービス
US7032210B2 (en) 2001-11-11 2006-04-18 International Business Machines Corporation Method and system for generating program source code of a computer application from an information model
US7359936B2 (en) 2001-11-27 2008-04-15 International Business Machines Corporation Method and apparatus for electronic mail interaction with grouped message types
US7363590B2 (en) 2001-11-27 2008-04-22 International Business Machines Corporation Calendar bar interface for electronic mail interaction
US6801230B2 (en) 2001-12-18 2004-10-05 Stanley W. Driskell Method to display and manage computer pop-up controls
WO2003058519A2 (en) 2002-01-08 2003-07-17 Sap Aktiengesellschaft Enhanced email management system
US7039596B1 (en) 2002-01-18 2006-05-02 America Online, Inc. Calendar overlays
US6947928B2 (en) 2002-02-26 2005-09-20 International Business Machines Corporation Graphical user interface for building queries with hierarchical conditions
US6850255B2 (en) 2002-02-28 2005-02-01 James Edward Muschetto Method and apparatus for accessing information, computer programs and electronic communications across multiple computing devices using a graphical user interface
US7003730B2 (en) 2002-03-08 2006-02-21 International Business Machines Corporation Graphical user interface to build event-based dynamic searches or queries using event profiles
US20040117451A1 (en) 2002-03-22 2004-06-17 Chung Michael Myung-Jin Methods and systems for electronic mail internet target and direct marketing and electronic mail banner
US20030195937A1 (en) 2002-04-16 2003-10-16 Kontact Software Inc. Intelligent message screening
US20040012633A1 (en) 2002-04-26 2004-01-22 Affymetrix, Inc., A Corporation Organized Under The Laws Of Delaware System, method, and computer program product for dynamic display, and analysis of biological sequence data
WO2003098500A1 (en) 2002-05-16 2003-11-27 Decision Curve Limited Method and apparatus for automatically producing spreadsheet-based models
US6972762B2 (en) 2002-05-21 2005-12-06 Microsoft Corporation System and method for interactive grouping of pie chart slices
US20040100504A1 (en) 2002-05-24 2004-05-27 Jored Sommer Item selection systems and methods of displaying the same
US7434163B2 (en) 2002-05-31 2008-10-07 Sap Aktiengesellschaft Document structures for delta handling in server pages
US20030227487A1 (en) 2002-06-01 2003-12-11 Hugh Harlan M. Method and apparatus for creating and accessing associative data structures under a shared model of categories, rules, triggers and data relationship permissions
US7191411B2 (en) 2002-06-06 2007-03-13 Moehrle Armin E Active path menu navigation system
GB2389499B (en) 2002-06-06 2005-09-28 Focus Solutions Group Plc Electronic data capture and verification
EP1376337A1 (en) 2002-06-12 2004-01-02 Commerce One Operations, Inc. Action/command/business object application framework
US20040003351A1 (en) 2002-06-28 2004-01-01 Microsoft Corporation Navigating a resource browser session
GB2391148B (en) 2002-07-19 2006-01-04 Autodesk Canada Inc Selecting functions via a graphical user interface
US20040109025A1 (en) 2002-08-28 2004-06-10 Jean-Marie Hullot Computer program comprising a plurality of calendars
EP1546972A1 (en) 2002-09-09 2005-06-29 Apple Computer, Inc. A computer program comprising a plurality of calendars
US20040056894A1 (en) 2002-09-19 2004-03-25 Igor Zaika System and method for describing and instantiating extensible user interfaces
US7386535B1 (en) 2002-10-02 2008-06-10 Q.Know Technologies, Inc. Computer assisted and/or implemented method for group collarboration on projects incorporating electronic information
US20040230508A1 (en) 2002-10-29 2004-11-18 Minnis Raymond Albert System for generating financial statements using templates
US20040100505A1 (en) 2002-11-21 2004-05-27 Cazier Robert Paul System for and method of prioritizing menu information
US20040107197A1 (en) 2002-11-29 2004-06-03 Shen Yu Yong System, method and user interface allowing customized portfolio management
CA2414053A1 (en) 2002-12-09 2004-06-09 Corel Corporation System and method for manipulating a document object model
US7360174B2 (en) 2002-12-19 2008-04-15 Microsoft Corporation Contact user interface
US7376698B2 (en) 2002-12-20 2008-05-20 Sap Ag System for preserving scripting objects and cloning the objects to a new document in response to a reload of the new document
US20040133854A1 (en) 2003-01-08 2004-07-08 Black Karl S. Persistent document object model
US20060111931A1 (en) 2003-01-09 2006-05-25 General Electric Company Method for the use of and interaction with business system transfer functions
US20040186775A1 (en) 2003-01-29 2004-09-23 Margiloff William A. Systems and methods for providing an improved toolbar
US7212208B2 (en) 2003-02-25 2007-05-01 Bahram Khozai System and method to present and display multiple data using enhanced box charts
US7539985B2 (en) 2003-02-26 2009-05-26 Bea Systems, Inc. Systems and methods for dynamic component versioning
US9003295B2 (en) 2003-03-17 2015-04-07 Leo Martin Baschy User interface driven access control system and method
US6983889B2 (en) 2003-03-21 2006-01-10 Home Comfort Zones, Inc. Forced-air zone climate control system for existing residential houses
US7823077B2 (en) 2003-03-24 2010-10-26 Microsoft Corporation System and method for user modification of metadata in a shell browser
US7188308B2 (en) 2003-04-08 2007-03-06 Thomas Weise Interface and method for exploring a collection of data
US7328409B2 (en) 2003-04-17 2008-02-05 International Business Machines Corporation Method, system, and computer program product for user customization of menu items
US7337185B2 (en) 2003-04-30 2008-02-26 Yahoo! Inc. System and method for providing an improved graphical user interface for search
JP4347123B2 (ja) 2003-05-02 2009-10-21 キヤノン株式会社 文書処理システムおよび文書処理方法およびコンピュータが読取り可能な記憶媒体およびプログラム
US7567964B2 (en) 2003-05-08 2009-07-28 Oracle International Corporation Configurable search graphical user interface and engine
WO2004109557A1 (en) 2003-06-03 2004-12-16 Forbes Holten Norris, Iii Flexible, dynamic menu-based web-page architecture
US7178101B2 (en) 2003-06-24 2007-02-13 Microsoft Corporation Content template system
US9715678B2 (en) 2003-06-26 2017-07-25 Microsoft Technology Licensing, Llc Side-by-side shared calendars
US7716593B2 (en) 2003-07-01 2010-05-11 Microsoft Corporation Conversation grouping of electronic mail records
US20050005249A1 (en) 2003-07-01 2005-01-06 Microsoft Corporation Combined content selection and display user interface
US7392249B1 (en) 2003-07-01 2008-06-24 Microsoft Corporation Methods, systems, and computer-readable mediums for providing persisting and continuously updating search folders
WO2005008432A2 (en) 2003-07-11 2005-01-27 Sonolink Communications Systems, Llc System and method for advanced rule creation and management within an integrated virtual workspace
US7027463B2 (en) 2003-07-11 2006-04-11 Sonolink Communications Systems, Llc System and method for multi-tiered rule filtering
US20050044500A1 (en) 2003-07-18 2005-02-24 Katsunori Orimoto Agent display device and agent display method
US20050021504A1 (en) 2003-07-22 2005-01-27 Charles Atchison Methods, systems, and computer program products for querying a database for employee data and organizing the obtained data
JP2005056233A (ja) 2003-08-06 2005-03-03 Nec Corp 移動体通信装置、移動体通信装置の電子メールの受信動作方法及びその電子メールの受信動作プログラム
US7472286B2 (en) * 2003-08-29 2008-12-30 Microsoft Corporation Selectively authorizing software functionality after installation of the software
US7325204B2 (en) 2003-08-29 2008-01-29 Yahoo! Inc. Slideout windows
US20050144241A1 (en) 2003-10-17 2005-06-30 Stata Raymond P. Systems and methods for a search-based email client
US20050086135A1 (en) 2003-10-20 2005-04-21 Li-Chin Lu Automatic bookkeeping system
US7346769B2 (en) 2003-10-23 2008-03-18 International Business Machines Corporation Method for selective encryption within documents
US6990637B2 (en) 2003-10-23 2006-01-24 Microsoft Corporation Graphical user interface for 3-dimensional view of a data collection based on an attribute of the data
US10437964B2 (en) 2003-10-24 2019-10-08 Microsoft Technology Licensing, Llc Programming interface for licensing
US20050117179A1 (en) 2003-11-06 2005-06-02 Tatsuo Ito Output information providing method, output information providing system, document outputting method, and document outputting system
US7996514B2 (en) 2003-12-23 2011-08-09 Microsoft Corporation System and method for sharing information based on proximity
US20050172262A1 (en) 2004-01-30 2005-08-04 Ahika Corporation Site menu - browser toolbar-based user interface for navigating web site pages
US7856596B2 (en) 2004-02-17 2010-12-21 Microsoft Corporation Method and system for separation of content and layout definitions in a display description
US7469385B2 (en) 2004-02-20 2008-12-23 Microsoft Corporation Methods and systems for abstraction of logical editing operations
KR101236619B1 (ko) 2004-03-15 2013-02-22 야후! 인크. 사용자 주석이 통합된 검색 시스템 및 방법
US7574674B2 (en) 2004-04-02 2009-08-11 Microsoft Corporation Method for controlling filename display for image and video file types
WO2005109904A2 (en) 2004-04-30 2005-11-17 Vulcan, Inc. Maintaining a graphical user interface state that is based on a selected type of content
US20050278656A1 (en) 2004-06-10 2005-12-15 Microsoft Corporation User control for dynamically adjusting the scope of a data set
US7954050B2 (en) 2004-06-25 2011-05-31 Icesoft Technologies Canada Corp. Systems and methods for rendering and increasing portability of document-based user interface software objects
US7720845B2 (en) 2004-08-13 2010-05-18 Yahoo! Inc. Systems and methods for updating query results based on query deltas
US9015621B2 (en) 2004-08-16 2015-04-21 Microsoft Technology Licensing, Llc Command user interface for displaying multiple sections of software functionality controls
US8255828B2 (en) 2004-08-16 2012-08-28 Microsoft Corporation Command user interface for displaying selectable software functionality controls
US8117542B2 (en) 2004-08-16 2012-02-14 Microsoft Corporation User interface for displaying selectable software functionality controls that are contextually relevant to a selected object
US7505954B2 (en) 2004-08-18 2009-03-17 International Business Machines Corporation Search bar with intelligent parametric search statement generation
US8239375B2 (en) 2004-08-31 2012-08-07 Research In Motion Limited Method of searching for personal information management (PIM) information and handheld electronic device employing the same
US7596594B2 (en) 2004-09-02 2009-09-29 Yahoo! Inc. System and method for displaying and acting upon email conversations across folders
US8126895B2 (en) 2004-10-07 2012-02-28 Computer Associates Think, Inc. Method, apparatus, and computer program product for indexing, synchronizing and searching digital data
US20060095865A1 (en) 2004-11-04 2006-05-04 Rostom Mohamed A Dynamic graphical user interface for a desktop environment
US8402384B2 (en) 2004-11-09 2013-03-19 Research In Motion Limited Dynamic bar oriented user interface
EP1835434A1 (en) 2004-11-12 2007-09-19 JustSystems Corporation Data processing device and data processing method
CN100458774C (zh) 2004-11-29 2009-02-04 国际商业机器公司 文档编辑器及文档编辑方法
US7546522B2 (en) 2004-12-20 2009-06-09 Microsoft Corporation Method, system, and computer-readable medium for applying a global formatting scheme to a chart in an electronic document
US20060173824A1 (en) 2005-02-01 2006-08-03 Metalincs Corporation Electronic communication analysis and visualization
US7921372B2 (en) 2005-03-25 2011-04-05 Microsoft Corporation System and method for pinning tabs in a tabbed browser
US7530029B2 (en) 2005-05-24 2009-05-05 Microsoft Corporation Narrow mode navigation pane
JP2007006373A (ja) 2005-06-27 2007-01-11 Konica Minolta Business Technologies Inc 書類データ管理システム、画像形成装置、書類データ管理方法、およびコンピュータプログラム
US7739259B2 (en) 2005-09-12 2010-06-15 Microsoft Corporation Integrated search and find user interface
US8627222B2 (en) 2005-09-12 2014-01-07 Microsoft Corporation Expanded search and find user interface
US7627561B2 (en) 2005-09-12 2009-12-01 Microsoft Corporation Search and find using expanded search scope
US7484180B2 (en) 2005-11-07 2009-01-27 Microsoft Corporation Getting started experience
US7975224B2 (en) 2005-12-21 2011-07-05 Xerox Corporation WYSIWYG multifunction device finishing options
JP2007287136A (ja) 2006-03-23 2007-11-01 Oce Technologies Bv オブジェクトの順序付けられた集合に対する処理動作をプログラミングするためのシステム
US20070240057A1 (en) 2006-04-11 2007-10-11 Microsoft Corporation User interface element for displaying contextual information
US8209308B2 (en) 2006-05-01 2012-06-26 Rueben Steven L Method for presentation of revisions of an electronic document
US8605090B2 (en) 2006-06-01 2013-12-10 Microsoft Corporation Modifying and formatting a chart using pictorially provided chart elements
US20080034304A1 (en) 2006-08-02 2008-02-07 Feuerbacher Frank P Method, System, and Program Product for Focus Switching Delay in a Graphical User Interface
US7805705B2 (en) 2006-08-04 2010-09-28 Apple Inc. Graphically depicting program code depth
US7793226B2 (en) 2006-08-14 2010-09-07 International Business Machines Corporation Method and system for grouping and stacking tab user interface objects with icon status indicators
US8484578B2 (en) 2007-06-29 2013-07-09 Microsoft Corporation Communication between a document editor in-space user interface and a document editor out-space user interface
US8201103B2 (en) 2007-06-29 2012-06-12 Microsoft Corporation Accessing an out-space user interface for a document editor program
US8762880B2 (en) 2007-06-29 2014-06-24 Microsoft Corporation Exposing non-authoring features through document status information in an out-space user interface

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2628203C2 (ru) * 2012-01-27 2017-08-15 МАЙКРОСОФТ ТЕКНОЛОДЖИ ЛАЙСЕНСИНГ, ЭлЭлСи Лицензирование приложения с использованием поставщиков синхронизации

Also Published As

Publication number Publication date
NO331572B1 (no) 2012-01-30
NZ535532A (en) 2006-11-30
TW200515243A (en) 2005-05-01
US20050091168A1 (en) 2005-04-28
RU2004131031A (ru) 2006-04-10
CN1609802A (zh) 2005-04-27
JP4851703B2 (ja) 2012-01-11
KR101231266B1 (ko) 2013-02-07
CO5630045A1 (es) 2006-04-28
TWI465935B (zh) 2014-12-21
MY153272A (en) 2015-01-29
BRPI0404376A (pt) 2005-06-21
CA2482182A1 (en) 2005-04-24
US20200034516A1 (en) 2020-01-30
EP1526427A3 (en) 2005-07-06
EP1526427A2 (en) 2005-04-27
CN100468325C (zh) 2009-03-11
AU2004216596B2 (en) 2010-03-11
IL164074A0 (en) 2005-12-18
MXPA04009395A (es) 2005-05-16
ZA200407586B (en) 2005-05-25
SG111200A1 (en) 2005-05-30
NO20044099L (no) 2005-04-25
IL164074A (en) 2010-06-30
KR20050039537A (ko) 2005-04-29
US10437964B2 (en) 2019-10-08
CA2482182C (en) 2017-03-28
JP2005129049A (ja) 2005-05-19
AU2004216596A1 (en) 2005-05-12

Similar Documents

Publication Publication Date Title
RU2377634C2 (ru) Программный интерфейс для лицензирования
CN110310205B (zh) 一种区块链数据监控方法、装置、设备和介质
CN102799817B (zh) 用于使用虚拟化技术进行恶意软件保护的系统和方法
US8046842B2 (en) Methods, systems, signals and media for encouraging users of computer readable content to register
US6813640B1 (en) System and method for controlling the editing by user action of digital objects created in a document server application
US20030033539A1 (en) Mobile code security architecture in an application service provider environment
CN101622624A (zh) 受限进程中的文件转换
WO2009148647A2 (en) Centralized enforcement of name-based computer system security rules
KR20010103747A (ko) 글로벌 데이터 구조를 사용해서 소형 풋프린트 장치의콘텍스트 배리어를 넘어선 액세스를 허용하기 위한 기술
KR20010103748A (ko) 엔트리 포인트 객체를 사용해서 소형 풋프린트 장치의콘텍스트 배리어를 넘어선 액세스를 허용하기 위한 기술
JP2001184264A (ja) アクセス制御システム、アクセス制御方法、記憶媒体、及びプログラム伝送装置
US7647629B2 (en) Hosted code runtime protection
US7076557B1 (en) Applying a permission grant set to a call stack during runtime
KR20010108114A (ko) 콘텍스트 배리어를 사용해서 소형 풋프린트 장치의 보안을구현하기 위한 기술
EP2329422B1 (en) Method of executing virtualized application able to run in virtualized environment
KR20010101622A (ko) 런타임 환경 특권을 사용해서 소형 풋프린트 장치의콘텍스트 배리어를 넘어선 액세스를 허용하기 위한 기술
US8185888B2 (en) Software execution with minimal impact deployment
CN101548284A (zh) 软件许可证中的条件策略
JP6670318B2 (ja) ソフトウェアアプリケーションにおける分類及びirmの実現
US8224750B1 (en) Method and system for upgrading licenses to installed software
US20070038572A1 (en) Method, system and computer program for metering software usage
CN113282906A (zh) 权限检测方法、装置、终端及存储介质
US7308542B1 (en) Data integrity protection for stored data
JP2010113566A (ja) 情報処理装置、アクセス制御方法、及びプログラム
CN117150487A (zh) 一种动态链接库文件注入检测方法及装置

Legal Events

Date Code Title Description
PC41 Official registration of the transfer of exclusive right

Effective date: 20150526

MM4A The patent is invalid due to non-payment of fees

Effective date: 20201023