Windows 7 обменивается данными между пользователями через реестр - PullRequest
1 голос
/ 15 июня 2010

Где можно создать / изменить / удалить разделы реестра для обмена данными между пользователями в реестре Windows 7?Оба пользователя не являются администраторами, и это не должно требовать прав администратора.

Приложение, над которым я работаю, использует реестр для записи ключа от userA, а затем userB может прочитать / изменить / удалить его.Ни у одного из пользователей нет прав администратора, и изменить его будет невозможно.

Существует ли официальное руководство MSDN по использованию реестра в Windows 7?Любые ссылки, описывающие правильное использование реестра, будут полезны.

Ответы [ 4 ]

2 голосов
/ 25 июня 2010

Вы не можете получить доступ к HKLM без повышения прав, поэтому вы просто не можете делать то, что описали.

Я предлагаю некоторые из следующих: 1. Выберите другое хранилище данных, например. база данных, файл и т. д., что все ваши пользователи могут получить доступ. 2. Создайте службу Windows, работающую как LocalSystem (которая предоставляет RW доступ к HKLM), и заставьте ваши приложения взаимодействовать со службой через именованные каналы / COM / сокет.

0 голосов
/ 15 июня 2010

В Windows 7 доступ к HKLM возможен только для приложений, работающих от имени администратора. Если у вас нет манифеста в приложении, оно будет виртуализировано, что означает запись в другое хранилище для каждого пользователя.

Я думаю, что вы должны использовать файл конфигурации в расположении для каждого приложения, которое не для пользователя, например,% PROGRAMDATA%, и чтобы ваша установка / установка (которая, вероятно, запускается от имени администратора) записала один ключ, который сообщает, где этот файл есть. Пользователи без прав администратора могут легко читать и записывать файл во время использования приложения.

0 голосов
/ 15 июня 2010

Реестр не совсем правильный способ сделать это.Не могли бы вы дать нам более подробную информацию о том, что вы на самом деле пытаетесь сделать?

Заходили ли пользователи одновременно?В этом случае может работать какой-то механизм межпроцессного взаимодействия (IPC).Например: именованные каналы, общая память, сокеты и т. Д.

Если нет, будет ли у вас постоянно запущенный процесс (т. Е. Служба)?Это можно использовать как своего рода механизм раскрывающегося списка.

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

Короче говоря: реестр действительно предназначен для долговременных настроек конфигурации.Кратковременное общение действительно должно быть сделано как-то иначе.

0 голосов
/ 15 июня 2010

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

Однако, если вам нужно, единственное место в реестре, которое будет иметь смысл, хотя бы немного, будет в кусте HKEY_LOCAL_MACHINE, в Software\yourapp, но я совершенно уверен, что там нет нигде, который был бы доступен для записи обычные пользователи по умолчанию.
Если вы можете, вы можете создать этот ключ, а затем изменить разрешения для группы users, чтобы они имели полный доступ.

Эта статья вики может помочь понять, как лучше всего использовать реестр.

...