2013-06-11 2 views
1

Я пытаюсь проверить, можно ли прочитать реестр из приложения Windows 8. Обычно я могу использовать Registry.GetValue(), но у меня нет этой возможности при создании приложения Win 8. Выполнение некоторых копаний показывает, что Registry.GetValue() принадлежит пространству имен Microsoft.Win32, которое недоступно на вкладке свойств ссылок на приложения Win 8.Чтение реестра с помощью приложения Win 8?

Я сделал некоторые поисковые запросы, но я не нашел конкретных доказательств того, что вы не можете прочитать реестр. Я боюсь, что я не смогу этого сделать из-за песочницы приложений Win 8.

+1

Вы правы. В приложениях Windows 8 Store (Modern/Metro) они помечены в песок, чтобы предотвратить доступ к элементам системного уровня, таким как реестр. Если вам нужно, чтобы приложение обращалось к реестру, оно должно быть типом проекта, отличным от Windows Store. – ajawad987

+0

Вот чего я боялся. Я просматриваю App Container (их версия песочницы), но я не могу найти ничего такого, что в штатах Apple Store не могут получить доступ к реестру. – bkanator

+2

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

ответ

4

Если вам действительно нужно, вы можете сделать это, используя сервисы interop.

Так импортировать функции WinAPI, нужна (вы можете получить подписи от PInvoke.net):

[DllImport("advapi32.dll", CharSet = CharSet.Unicode)] 
public static extern int RegOpenKeyEx(UIntPtr hKey, string lpSubKey, 
     uint ulOptions, int samDesired, out UIntPtr phkResult); 

И сделать свои собственные обертки вокруг них.

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

+1

Спасибо за эту информацию. Я смог найти свой ответ тогда в своих требованиях к сертификации: http://msdn.microsoft.com/en-us/library/windows/apps/hh694083.aspx. – bkanator

Смежные вопросы