有人在Windows Mobile中使用过RemoteWipe吗?

时间:2009-12-21 21:35:25

标签: windows-mobile

我刚收到我的Treo并注意到缺少软件重置(需要在重置按钮上使用手写笔真的让我烦恼),我决定建立自己的。

我的小程序的重置和暂停部分就像一个魅力,然后我决定改进一点并添加一个硬重置功能,这将把设备恢复到出厂设置。

在网上搜索高低,我找到了两种可能的方法。第一个涉及调用SetCleanRebootFlag()然后重置设备。

[DllImport("coredll.dll", SetLastError=true)]
public static extern void SetCleanRebootFlag();

[DllImport("coredll.dll", SetLastError=true)]
private static extern int SetSystemPowerState(IntPtr psState, PowerStateFlags flags, uint Options);

[DllImport("coredll.dll", SetLastError=true)]
private static extern bool KernelIoControl(int dwIoControlCode, IntPtr inBuf, int inBufSize, IntPtr outBuf, int outBufSize, ref int bytesReturned);

public static void SoftReset()
{
    if (SetSystemPowerState(IntPtr.Zero, PowerStateFlags.Reset, 0x1000) != 0)
    {
        int bytesReturned = 0;
        if (!KernelIoControl(0x101003c, IntPtr.Zero, 0, IntPtr.Zero, 0, ref bytesReturned))
        {
            throw new Win32Exception(Marshal.GetLastWin32Error());
        }
    }
}

public static void HardReset()
{
    SetCleanRebootFlag();
    SoftReset();
}

另一个涉及使用ConfigurationManager来处理执行“RemoteWipe”的XML。

public static void HardReset()
{
    XmlDocument doc = new XmlDocument();
    doc.LoadXml("<wap-provisioningdoc>" + 
                    "<characteristic type='RemoteWipe'>" + 
                        "<parm name='doWipe' value='1'/>" +
                    "</characteristic>" +
                "</wap-provisioningdoc>");
    ConfigurationManager.ProcessConfiguration(doc, true);
}

第一种方法不起作用,因为在Windows Mobile 5之后它忽略了CleanBootFlag;第二种方法......太多了。

它破坏了设备上的microSD,使其需要重新格式化以便再次识别。

有没有人有过这方面的经验?


已编辑添加: 不幸的是,我的问题的答案与Paul Betts完全相同。引用MSDN

  
    

RemoteWipe配置服务提供商使移动运营商能够远程擦除设备。如果在丢失或被盗后远程擦除设备,RemoteWipe配置服务提供商将使存储在内存,存储卡和硬盘中的数据难以恢复。

  

1 个答案:

答案 0 :(得分:2)

这不是Remote Wipe应该做的吗?