Re: How do I read PocketPC registry from ASP.NET application

Tech Tip: Click here to run a free scan for Windows Errors and optimize PC performance

From: Ginny Caughey [MVP] (ginny.caughey.online_at_wasteworks.com)
Date: 04/20/04


Date: Tue, 20 Apr 2004 10:31:34 -0400

Mark,

You can read the PPC registry from the desktop using Rapi. There's also a
Rapi class in the OpenNetCF Communication section

-- 
Ginny Caughey
.Net Compact Framework MVP
"Mark Pitman" <mark@ePitman.com> wrote in message
news:uRZmcgdJEHA.3104@TK2MSFTNGP10.phx.gbl...
> That will work on the WEBSERVER, but how is it going to get the device ID
> from the PPC? An ASP.NET app has no way of reading the registry on the PPC
> that is connecting. You would have to have some client side code on the
PPC
> that would run, read the device ID from the registry, then call a
webservice
> maybe to post it to the server, then execute a copy of the browser that
> passed a token to the website so that your ASP.Net app knows which device
is
> connecting.
>
> If you do need to read from the registry of a PPC device, I highly suggest
> using the Smart Device Framework from http://www.opennetcf.org. Much
easier
> than writing all the P/Invoke code yourself :)
>
> m
>
> "Goran Djuranovic" <djurag@mmcREMOVE_TO_MAIL.org> wrote in message
> news:u12IAv$IEHA.556@tk2msftngp13.phx.gbl...
> > I just figured out it can be done this way:
> > --------------------------------------------
> >    Dim RegKey As RegistryKey =
> > Registry.LocalMachine.OpenSubKey("SOFTWARE\Microsoft\Internet
> > Explorer\Main")
> >    Response.Write(RegKey.GetValue("Start Page"))
> > -----------------------------------------------
> >
> > Hope this helps someone
> > Goran Djuranovic
> >
> > Thanks for your response
> >
> > "Harry Simpson" <hssimpson@nospamphgt.net> wrote in message
> > news:OvRbJi$IEHA.3244@tk2msftngp13.phx.gbl...
> > > Goran,
> > >
> > > I got the code from gotdotnet site at:
> > >
> >
>
http://samples.gotdotnet.com/quickstart/util/srcview.aspx?path=/quickstart/CompactFramework/samples/deviceid/deviceid.src
> > >
> > > Try to grab the segment from there.
> > >
> > > Harry
> > >
> > > "Goran Djuranovic" <djurag@mmcREMOVE_TO_MAIL.org> wrote in message
> > > news:O$dM0N$IEHA.2880@TK2MSFTNGP10.phx.gbl...
> > > > Harry,
> > > > This is the error that I got when tried the suggested code:
> > > > System.DllNotFoundException: Unable to load DLL (Coredll.dll).
> > > >
> > > > I also forgot to mention that PocketPC is accessing an ASP.NET
> > application
> > > > wirelessly.
> > > > Once the app is accessed, PocketPC's DeviceID is stored to the
> database.
> > > >
> > > > Is there anything else I missed.
> > > >
> > > > Thanks for your response
> > > > Goran
> > > >
> > > > "Harry Simpson" <hssimpson@nospamphgt.net> wrote in message
> > > > news:%23eCgus9IEHA.3144@TK2MSFTNGP10.phx.gbl...
> > > > > This will do the trick though hopefully there is a more eloquent
> .NET
> > > > > way.....
> > > > >
> > > > > HTH
> > > > > Harry
> > > > >
> > > > > Public Class DeviceID
> > > > >     Declare Function KernelIoControl Lib "CoreDll.dll" (ByVal
> > > > > dwIoControlCode As Int32, ByVal lpInBuf As IntPtr, ByVal
nInBufSize
> As
> > > > > Int32, ByVal lpOutBuf() As Byte, ByVal nOutBufSize As Int32, ByRef
> > > > > lpBytesReturned As Int32) As Boolean
> > > > >     Private Shared METHOD_BUFFERED As Int32 = 0
> > > > >     Private Shared FILE_ANY_ACCESS As Int32 = 0
> > > > >     Private Shared FILE_DEVICE_HAL As Int32 = &H101
> > > > >
> > > > >     Private Const ERROR_NOT_SUPPORTED As Int32 = &H32
> > > > >     Private Const ERROR_INSUFFICIENT_BUFFER As Int32 = &H7A
> > > > >
> > > > >
> > > > >     Private Shared IOCTL_HAL_GET_DEVICEID As Int32 = (&H10000 *
> > > > > FILE_DEVICE_HAL) Or (&H4000 * FILE_ANY_ACCESS) Or (&H4 * 21) Or
> > > > > METHOD_BUFFERED
> > > > >
> > > > >
> > > > >     Public Shared Function GetDeviceID() As String
> > > > >
> > > > >
> > > > >         ' Initialize the output buffer to the size of a Win32
> > DEVICE_ID
> > > > > structure
> > > > >         '
> > > > >         Dim outbuff(19) As Byte
> > > > >         Dim dwOutBytes As Int32
> > > > >         Dim done As Boolean = False
> > > > >
> > > > >         Dim nBuffSize As Int32 = outbuff.Length
> > > > >         ' Set DEVICEID.dwSize to size of buffer.  Some platforms
> look
> > at
> > > > >         ' this field rather than the nOutBufSize param of
> > > KernelIoControl
> > > > >         ' when determining if the buffer is large enough.
> > > > >         '
> > > > >         BitConverter.GetBytes(nBuffSize).CopyTo(outbuff, 0)
> > > > >         dwOutBytes = 0
> > > > >
> > > > >
> > > > >         ' Loop until the device ID is retrieved or an error occurs
> > > > >         '
> > > > >         While Not done
> > > > >             If KernelIoControl(IOCTL_HAL_GET_DEVICEID,
IntPtr.Zero,
> 0,
> > > > > outbuff, nBuffSize, dwOutBytes) Then
> > > > >                 done = True
> > > > >             Else
> > > > >                 Dim [error] As Integer =
Marshal.GetLastWin32Error()
> > > > >                 Select Case [error]
> > > > >                     Case ERROR_NOT_SUPPORTED
> > > > >                         Throw New
> > > > > NotSupportedException("IOCTL_HAL_GET_DEVICEID is not supported on
> this
> > > > > device", New Win32Exception([error]))
> > > > >
> > > > >                     Case ERROR_INSUFFICIENT_BUFFER
> > > > >                         ' The buffer is not big enough for the
data.
> > > The
> > > > > required size
> > > > >                         ' is in the first 4 bytes of the output
> buffer
> > > > > (DEVICE_ID.dwSize).
> > > > >                         nBuffSize = BitConverter.ToInt32(outbuff,
0)
> > > > >                         outbuff = New Byte(nBuffSize) {}
> > > > >                         ' Set DEVICEID.dwSize to size of buffer.
> Some
> > > > >                         ' platforms look at this field rather than
> the
> > > > >                         ' nOutBufSize param of KernelIoControl
when
> > > > >                         ' determining if the buffer is large
enough.
> > > > >                         '
> > > > >
> > BitConverter.GetBytes(nBuffSize).CopyTo(outbuff,
> > > > 0)
> > > > >
> > > > >                     Case Else
> > > > >                         Throw New Win32Exception([error],
> "Unexpected
> > > > > error")
> > > > >                 End Select
> > > > >             End If
> > > > >         End While
> > > > >
> > > > >         Dim dwPresetIDOffset As Int32 =
> BitConverter.ToInt32(outbuff,
> > > &H4)
> > > > > ' DEVICE_ID.dwPresetIDOffset
> > > > >         Dim dwPresetIDSize As Int32 =
BitConverter.ToInt32(outbuff,
> > &H8)
> > > > > ' DEVICE_ID.dwPresetIDSize
> > > > >         Dim dwPlatformIDOffset As Int32 =
> > BitConverter.ToInt32(outbuff,
> > > > &HC)
> > > > > ' DEVICE_ID.dwPlatformIDOffset
> > > > >         Dim dwPlatformIDSize As Int32 =
> BitConverter.ToInt32(outbuff,
> > > > &H10)
> > > > > ' DEVICE_ID.dwPlatformIDBytes
> > > > >         Dim sb As New StringBuilder
> > > > >         Dim i As Integer
> > > > >
> > > > >         For i = dwPresetIDOffset To (dwPresetIDOffset +
> > > dwPresetIDSize) -
> > > > 1
> > > > >             sb.Append(String.Format("{0:X2}", outbuff(i)))
> > > > >         Next i
> > > > >         sb.Append("-")
> > > > >         For i = dwPlatformIDOffset To (dwPlatformIDOffset +
> > > > > dwPlatformIDSize) - 1
> > > > >             sb.Append(String.Format("{0:X2}", outbuff(i)))
> > > > >         Next i
> > > > >         Return sb.ToString()
> > > > >     End Function
> > > > > End Class
> > > > >
> > > > >
> > > > > "Goran Djuranovic" <djurag@mmcREMOVE_TO_MAIL.org> wrote in message
> > > > > news:OcpTbk9IEHA.3556@TK2MSFTNGP10.phx.gbl...
> > > > > > Hi All,
> > > > > > I would like to be able to read Device ID from PocketPC.
> > > > > > I guess I have to read PocketPC's registry somehow.
> > > > > > How do I do this?
> > > > > >
> > > > > > -- 
> > > > > > Thanks for your time
> > > > > > Goran Djuranovic
> > > > > >
> > > > > >
> > > > >
> > > > >
> > > >
> > > >
> > >
> > >
> >
> >
>
>


Relevant Pages

  • Re: Daylight Savings Time Patch.
    ... That's quite different from what I have on my PPC 2003. ... I've taken a look at the WM registry entries for the US DST changes as ... if you want a star-gazing app) that shows info about dates in the ...
    (microsoft.public.pocketpc)
  • Re: How do I read PocketPC registry from ASP.NET application
    ... Allowing a web page to access the registry would be a huge security hole. ... >> You can read the PPC registry from the desktop using Rapi. ... >> Rapi class in the OpenNetCF Communication section ...
    (microsoft.public.dotnet.framework.compactframework)
  • Re: Slow POP3 Logon - Windows Mobile 2003
    ... I mainly use HTTPMail Provider for email on my PPC ... There is a problem with sending email from PocketPCs with the PocketPC ... that forces the registry to ell the operating system not to use SSL. ...
    (microsoft.public.pocketpc)
  • Re: iPAQ 5555 - why so slow to log into e-mail?
    ... problems with sending mail with IPAQ HP 3870 and PPC 2003 and ... So you need to do a registry tweak that forces the registry to tell the ... and then click on the cab file from within the PPC File ...
    (microsoft.public.pocketpc)
  • Re: Money for Pocket PC
    ... And how do I do the cleaning up of the registry in the PPC, ... >> Money for Pocket PC 2004, everything was working just fine, but this morning ... After cleaning it try another reinstall. ...
    (microsoft.public.pocketpc)