Убедитесь, что устройство рутовано или нет.
Если устройство рутировано, запросите разрешение root и вы можете перезагрузить устройство.
Здесь , как проверить, доступен ли root-доступ или нет.
В первую очередь, действительно нет никакого серьезного основания сделать это. Две формы функционально эквивалентны. Любой процессор XML хорошего поведения обработает их абсолютно тождественно. Таким образом, если Вы не пытаетесь говорить с приложением, которое правильно не реализует пространства имен XML, это лучше (IMO) только для оставления формы по умолчанию в покое. (И даже в этом случае, это было бы лучше, если вообще возможный, для исправления дефектного приложения вместо этого.)
Тем не менее можно вручную установить префикс на XmlElement, который возвращается SignedXml. GetXml () и его дочерние элементы с помощью XPath как это:
XmlElement signature = signedXml.GetXml();
foreach (XmlNode node in signature.SelectNodes(
"descendant-or-self::*[namespace-uri()='http://www.w3.org/2000/09/xmldsig#']"))
{
node.Prefix = "ds";
}
Это не может быть сделано. При изменении XML после того, как он был подписан, он не может быть проверенным, который имел место в примере выше. IMO это - дефект в реализации цифровой подписи MSFT, с которой необходимо будет жить.
Много людей скажет, что нет никакой причины сделать это, и они технически корректны. Но когда Вы имеете дело с огромным поставщиком (т.е. региональное правительство или банк), удача, заставляя их изменить его на их конце. Большинство ссылочных реализаций включает его.
ОБНОВЛЕНИЕ: подпись подписывает все в элементе SignedInfo, поэтому если Вы идете, обновляя тот элемент после факта, затем Подпись больше не действительна. Вы "вмешались" с сообщением.