Просто ищу какой-то указатель, прежде чем идти по неверному пути. Я написал небольшое консольное приложение на C #, которое открывает, читает, записывает и удаляет из реестра наших пользователей под HKEY_LOCAL_MACHINE и HKEY_CURRENT_USER
Конечно, он работает на моем ПК и на всех тестовых ПК, но один из наших клиентов получает ошибку при попытке запустить .exe
System.Security.SecurityException: сбой запроса разрешения типа 'System.Security.Permissions.RegistryPermission, mscorlib, Version = 2.0.0.0, Culture = нейтральный, PublicKeyToken = b77a5c561934e089'.
в System.Security.CodeAccessSecurityEngine.Check (Требование объекта, StackCrawlMark & stackMark, логическое значение isPermSet)
в System.Security.CodeAccessPermission.Demand ()
в Microsoft.Win32.RegistryKey.CheckSubKeyReadPermission (String subkeyName)
в Microsoft.Win32.RegistryKey.CheckOpenSubKeyPermission (String subkeyName, Boolean> subKeyWritable)
в Microsoft.Win32.RegistryKey.OpenSubKey (имя строки, логическая запись)
at EstateMasterClearReg.Program.Main (String [] args)
Не удалось выполнить действие:
Спрос.
Тип первого разрешения, которое не удалось:
System.Security.Permissions.RegistryPermission
Зона сборки, которая провалилась, была:
Intranet
Поскольку я не смогу проверить это на клиентских машинах (и они сказали, что у них есть .exe, работающий локально и вошедший в систему как администратор), я могу сделать что-нибудь, чтобы убедиться, что приложение будет бегать на любой машине?
Нужно ли использовать ключ строгого имени и AllowPartiallyTrustedCallers или мне следует использовать System.Security.Permissions.RegistryPermission?
Спасибо за вашу помощь.