NAVmoble - the pocket-sized ERP
Optimized for Microsoft Dynamics NAV and Windows Mobile powered devices
Showing posts with label Mobile. Show all posts
Showing posts with label Mobile. Show all posts

Thursday, January 13, 2011

Motorola Atrix - is this the begining of the long way to the laptop's death

I just notice the announcement from Motorola about the their Motorola ATRIX device.


It's a dual core (NVidia Tegra2) mobile device combined with various accessories. The most interesing feature is the docking capability. Motorola provides the following interesting accesssories:


When docked, the phone is redirecting the video out to the corresponding device and behave like a full blown laptop or media center device.

Checkout the videos:




Checkout the spec
  • Nvidia Tegra 2 1GHz dual core processor
  • Presently Running at Android Froyo 2.2 may be upgradable to Android 2.3(gingerbread)
  • 4”inch screen @ 540 x 960 pixels (Gorilla Glass display)
  • Biometric Fingerprint Reader
  • MotoBlur UI with Live Widgets
  • 16GB internal storage expandable up to 32GB via microSD
  • 1024MB RAM
  • HSDPA 14.4Mbps, HSUPA 5.76Mbps
  • WiFi 802.11 b/g/n, DLNA, GPS w/ aGPS support
  • Bluetooth 2.1 w/ A2DP, EDR, FM Radio Tuner, USB 2.0
  • 5MP autofocus camera with LED Flash
  • 720p HD video recording
  • Li-IOn 1930mAh battery




Links
The ATRIX device on Motorola's web site
Motorola Atrix videos

Thursday, February 18, 2010

Motorola Mobility Event in Sofia

I was at the Motorola Mobility Event in Sofia. The event was supported by Microsoft and Zebra. The goal of the event was to present the Motorola mobility solutions in front of the local image Microsoft Partners.
Motorola presented their mobility portfolio targeted to business users. Zebra also presented their products. There were other companies presenting their products and services related to the mobility like RRC.

The content of the event was interesting and the Motorola and Zebra presenters were well prepared. The event sessions were mostly in English. There was only one in Bulgarian and that was mine. I presented a success story regarding a mobility solution were I was involved based on Motorola hardware and NAVmobile

There were not many people at the event, but the food and drinks were plenty.

This event was the best one regarding the mobility in our region. Motorola presented their business vision about the local mobility market and shared great ideas about the ways to target new business niches. There were good options for business networking with the guys around.

Links:

Motorola Mobility Web Site
NAVmobile web site
Zebra web site

Tuesday, October 13, 2009

Running .NET Apps on iPhone

I missed it somehow, but Novell released MonoTouch (current release is v.1.1.1) , which gives the developers the opportunity to develop iPhone applications using C# and their favorite .NET Framework classes.
Actually, we talk here about static native code generation ( there is no CLR implementation).
It is based on Mono's feature called Full AOT (Ahead of Time Compilation)

MonoTouch supports garbage collection, multi-threading, and many features of .NET 3.5, including C# 3.0 and LINQ, with some exceptions due to the security system in the device. See Limitations for more information about the limitations of MonoTouch.

The following .NET assemblies are part of MonoTouch 1.0:

  • mscorlib.dll
  • System.dll
  • System.Core.dll
  • System.Xml.dll
  • System.Xml.Linq.dll

MonoTouch supports BCL, WebServices, Linq and even limited WCF functionality.
There are number of limitations . The main reason is the static code generation process. There is no direct debugging experience and generics support is limited - read more about limitations


Checkout this screencast for a quick Hello World feel. (via www.codesnack.com)

It sound very promising ... just need $400/$1000, Mac, and iPhone Developer Program membership to get hands durty.

Game developers may check out Unity for another C# to XCode compiler. However Unity is dedicated to game development

Links
MonoTouch web site
Limitations of MonoTouch
Debugging support in MonoTouch
Editions and Pricing
Getting started screencast
Full AOT (Ahead of Time Compilation)
Unity web site

Tuesday, July 21, 2009

Sunday, October 26, 2008

Mobile sessions during October and November 2008

PowerPoint files are available for download at the bottom of this post

I'm going to have few public speaches dedicated to the Microsoft's mobile development technology stack.
The first two sessions are part of the Microsoft Day events organized in the local universities.
The last two are part of a free set of sessions dedicated to Visual Studio 2008, Windows Server 2008 and Office Project 2007, sponsored by Microsoft Bulgaria and New Horizons Bulgaria

30.Oct.2008, 15:00h,Varna, University of Economics - Varna
Lap around Windows Mobile

31.Oct.2008, 10:00h,Varna, Technical University - Varna
Mobile development with Visual Strudio 2008 and Compact Framework 3.5

6.Nov.2008, 18:30h ,Sofia, New Horizons Bulgaria
Developing Windows Mobile Applications with Visual Studio 2008

20.Nov.2008, 18:30h,Sofia, New Horizons Bulgaria
Under the hood: Windows Mobile and Visual Studio 2008

All the sessions are free to attend, however the last two require you to sign-up in advance


UPDATE:
PPT File: Developing Windows Mobile Applications with Visual Studio 2008


Tuesday, June 10, 2008

Managed Services and Today Screen Item with .NET Compact Framework

I'm .NET addicted and never felt comfortable to realize that I can't solve my problem in pure managed manner.
Well, the "native" is a native part of the mobile developer, but anyway I prefer managed.

I was happy to see that some mobile folks here work for my comfort :)

Peter Nowaks has a post about creating Managed Services in Windows Mobile by using .NET Compact Framework. He has created a managed library, hosted in CodePlex. His work is based on article by Pavel Bánský

Christopher Fairbairn also published  a very handy library, which may help you creating a managed Today Screen Item.

 

Great work guys!

 

Links
Peter Nowaks on Creating Managed Services in Windows Mobile
Pavel Bánský on Creating Managed Services in Windows Mobile
Christopher Fairbairn on Creating Managed Today Screen Item

Wednesday, November 28, 2007

When Compact Framework fails to make HttpWebRequest ...

Andrew Arnott has an interesting post about a bug found in CF.NET . It may fail to call some web servers with the following error:
System.Net.WebException: Unable to read data from the transport connection.

Want to know why? See the details here...

(via .NET Compact Framework Team's blog)

Thursday, August 16, 2007

How to upgrade HTC P3600(a.k.a. Trinity) to Windows Mobile 6 and unlocking the GPS


FOLLOW THE STEPS BELLOW ON YOUR OWN RISK.!
IT IS IMPORTANT TO NOTE THAT THIS PROCEDURE MAY TURN YOUR DEVICE TO A USELESS BRICK!

NO WARRANTIES AT ALL!

I use HTC P3600 as a phone/PDA which is armed with Windows Mobile 5.0. The device has a camera, 3G,WiFi,Bluetooth and more. It does not have a GPS(officially).
I noticed recently that the guys from xda-developers.com have published Windows Mobile 6 image for Trinity. It is important to note that HTC does not provide official upgrade for P3600.

So, I read some posts on the xda forums and finally managed to upgrade my device. I have now WM 6 on my P3600 and the most interesting part is that I have a GPS support.

I followed these steps:

1. Downloaded the WM6 image and ROMUpgrade utility on the PC:
http://ax3l.volospin.com/AX3L_OS%20v2.0.8.2.rar

Check out other available WM images here:
http://wiki.xda-developers.com/index.php?pagename=Trinity_Upgrades

2. Downloaded the following tool(SSPL-TRIN.exe) on the PC.
It allows to bypass the CID and signature check.
Download link:
http://forum.xda-developers.com/attachment.php?attachmentid=34180&d=1171153073
The following post gives more details:
http://forum.xda-developers.com/showthread.php?t=293632

3. Connected the device to PC
4. Copied SSPL-TRIN.exe on the device
5. Launched SSPL-TRIN.exe from the device.
The screen turned-off anf a strange colorful screen appeared(bootloader mode)

6. Launched the ROMUpdateUtility.exe from the PC
I performed the upgrade on Vista so I needed to download the ROMUpdateUtility for Vista:
http://203.162.89.207/Ruu_3.13.3.2.zip
I just needed to replace the extracted files from Step 1

7. Followed the steps provided by the ROMUpdateUtility

And ops! I have the WM6 on my device! The big surprise is that the device has now a GPS support!

IMPORTANT NOTES:


  • it is a risky operation and you may render your device unusable. Do it on your own risk
  • do not launch any application on your PC during the upgrade process
  • do not disconnect/turnoff the device
  • do not restart/turn off PC
  • make sure you have device battery charged over 50%
  • disable PC hibernate/sleep features - or just move the mouse to prevent it
  • carefully read the redme.doc before starting the upgrade process

More info may be found on the following places:
http://forum.xda-developers.com/forumdisplay.php?f=359
http://wiki.xda-developers.com/index.php?pagename=HTC_Trinity


Links:
Windows Mobile 6 Image for Trinity
SSPL-Trin - tool to bypass the CID/signature checking
ROMUpdateUtility for Vista
Trinity Wikki
Trinity and Windows Mobile 6 Forums

Monday, August 06, 2007

"How To" Series: Configuring Network Adapters with Compact Framework


There was a question in the forums, if there is a way to configure a network adapter automatically - without an user interaction. Using the UI, the user may select "My network card connects to" value for every adapter in the adapters list. It may be changed to point one of the available network destinations like "The Internet" , "Work", etc. So, is there a way to this automatically?

In short the answer is YES! There is a way. We may prepare an OMA Client Provisioning File and pass it to the appropriate configuration provider in Windows Mobile.
An appropriate configuration file would be like this:


<wap-provisioningdoc>
<characteristic type="CM_NetEntries">
<characteristic type="Adapter Name">
<parm name="DestId" value="{A1182988-0D73-439e-87AD-2A5B369F808B}"/>
<parm name="Adapter" value="Qualified Name"/>
</characteristic>
</characteristic>
</wap-provisioningdoc>




This file will bind a network adapter named "Adapter Name"
to the "Work" destination. We have to change the "Adapter Name" value with
the name of the adapter as it is seen in the adapters list. The "Qualified Name" should be changed with the fully qualified name of the adapter - it may be obtained by using the GetAdaptersAddresses routine

If we want to change the destination to "The Internet" , we have to supply different GUID for the DestId parameter. Following network identifiers as configured by default on Windows Mobile:

The Internet: {436EF144-B4FB-4863-A041-8F905A62C572}
Work: {A1182988-0D73-439e-87AD-2A5B369F808B}
WAP Network: {7022E968-5A97-4051-BC1C-C578E2FBA5D9}
Secure WAP Network:{F28D1F74-72BE-4394-A4A7-4E296219390C}
CurrentDTPTNetwork:{A1182988-0D73-439e-87AD-2A5B369F808B}

What we have to do in order to apply this configuration setting?
We have the following options:
1. Preparing the provisioning Xml file , save it as _setup.xml, and place it inside a CAB file. We may "execute" the file on the device, then. Check out this post for details about deploying provisioning files with CABs.
2. We may apply these settings through code(Compact Framework) by using the managed Microsoft.WindowsMobile.Configuration.ConfigurationManager class from Windows Mobile 5 SDK:

string configurationXml = "<wap-provisioningdoc><characteristic type=\"CM_NetEntries\">"+
"<characteristic type=\"Adapter Name\"><parm name=\"DestId\" "+
"value=\"{A1182988-0D73-439e-87AD-2A5B369F808B}\"/><parm name=\"Adapter\" value=\"Qualified Name\" /> "+
"</characteristic></characteristic></wap-provisioningdoc>";
// Load XML
XmlDocument configurationXmlDoc = new XmlDocument();
configurationXmlDoc.LoadXml(configurationXml);
// Send to Configuration Manager
ConfigurationManager.ProcessConfiguration(configurationXmlDoc, false);


Also the unmanaged version DMProcessConfigXML may be used
Check out this post for unmanaged wrapper of DMProcessConfigXML

Links
CM_NetEntries Configuration Service Provider Examples for OMA Client Provisioning
Injecting Provisioning XML into a cab using VS 2005 on the Windows Mobile Blog
DMProcessConfigXML on the Marcus Perryman's WebLog
Windows Mobile Device Management for more configuration options

Sunday, July 29, 2007

Visual Studio 2008: Device Security Manager

In my post “How to” Series: Windows Mobile Security Configurations, I said that if you want to deal with the device security configurations you may download the Security Configuration Manager Powertoy for Windows Mobile.(there are some other options as well)
If you have the Visual Studio 2008 Beta 2 installed, you do not need this powertoy anymore. It is part of VS 2008,now.


Just cradle the device( or emulator) , launch the Device Security Manager and start locking,unlocking and installing device certificates :).

I just noticed Mark Arteaga has collected some resources related to Windows Mobile Security. Check them out.


Links:
“How to” Series: Windows Mobile Security Configurations
Windows Mobile Security resources from Mark Arteaga

Tuesday, July 24, 2007

"How To" Series: Reading Device Owner Information on Windows Mobile



I noticed recently, that some guys asked(in the forums) how to read the device owner information from .NET Compact Framework.

The Device Owner information may be obtained from the device's registry. It is stored under the following registry key: HKEY_CURRENT_USER\ControlPanel\Owner






Note that, this key may be missing on a fresh device. The key is populated after the owner sets his/her information.

The registry key HKEY_CURRENT_USER\ControlPanel\Owner has two interesting values:
"Owner" and "Owner Notes". These values holds binary data.
The "Owner" value contains the following owner information attributes: Name, Company, Phone, E-mail, Address. The "Owner Notes" value contains the Notes of the owner :)
Reading Owner notes is simple like:
RegistryKey key = Registry.CurrentUser.OpenSubKey("ControlPanel\\Owner");
byte[] data = key.GetValue("Owner Notes") as byte[];
string notes = UnicodeEncoding.Unicode.GetString(data, 0, data.Length).TrimEnd('\0');

The tricky part is to "decode" the "Owner" binary data, which contains multiple fixed-length values. In order to deal with it , we have to know the exact length of every device owner attribute:

  • Name: 72 bytes
  • Company: 72 bytes
  • Address: 372 bytes
  • Phone: 48 bytes
  • Email: 74 bytes

So, reading the "Owner" info is easy as:
RegistryKey key = Registry.CurrentUser.OpenSubKey("ControlPanel\\Owner");
byte[] data = key.GetValue("Owner") as byte[];
string name = UnicodeEncoding.Unicode.GetString(data,0,72).TrimEnd('\0');
string company = UnicodeEncoding.Unicode.GetString(data,72,72).TrimEnd('\0');
string address = UnicodeEncoding.Unicode.GetString(data, 144, 372).TrimEnd('\0');
string phone = UnicodeEncoding.Unicode.GetString(data, 516, 48).TrimEnd('\0');
string email = UnicodeEncoding.Unicode.GetString(data, 566, 74).TrimEnd('\0');

You may obtain the full source code from here

Monday, July 16, 2007

Internet Explorer Mobile:One-Column Layout

Fig 1. One Column Layout

I had a complaint from a customer of mine, that the Internet Explorer Mobile(Windows Mobile 5.0) does not render their HTML reports in a tabular form.
At first, I was wondering if they found a defect in our custom HTML exporting feature.Then I realize what happened.

We're using a sequence of TABLE,TR and TD tags to have our HTML content rendered into a tabular form. Some of the users accidentally had switched on the One Column feature of the Mobile Internet Explorer. This layout forces the Mobile Internet Explorer to render all content in a single column without horizontal scrolling.






Fig.2: Default layout

Links
IE Mobile Team Weblog
Wikipedia for IE Mobile

Tuesday, July 10, 2007

"How To" Series: Retrieving IMSI and IMEI on Windows Mobile

I had to retrieve the IMSI and IMEI on Windows Mobile for a particular project.
What I needed actually was the IMSI , because it may be used in OMA Client Provisoning through WAP Push scenarios. It may be very practical for the enterprise to manage its devices remotely and I will post more on that topic later on.

In order to retreive IMSI and IMEI, one have to deal with the Telephony API and PInvoke. In general the magic is done by invoking the native lineGetGeneralInfo routine from TAPI.
You may download the full source code from here

the original code article may be found here

There is another approach as well - buy the Telephony library from OpenNETCF

Links
What is IMSI
What is IMEI
OMA Client Provisoning for Windows Mobile
The sample source code

Thursday, May 31, 2007

Windows PowerShell and the mobile device's GAC

Neil Cowburn published an useful example about using Windows Power Shell&RAPI to enumerate the device's GAC files.

Links
Neil Cowburn on Windows PowerShell,RAPI and devices's GAC
Me on Automating Windows Mobile with Windows PowerShell

Wednesday, May 09, 2007

The oFone is here! :)

The 'Windows Mobile oFone' video shown on MEDC is available on YourTube.com

From SeatlePI.com

Microsoft showed the video during a keynote address by Robbie Bach, president of Microsoft's Entertainment and Devices Division, at the company's Mobile and Embedded Developer Conference this morning. Some current and former Windows Mobile team members make appearances in the SPOOF.
Just in case somebody didn't get the joke, Bach offered a disclaimer when he came back on stage. "I'll be clear: Any press in the audience, we are not announcing the oFone. Don't want anybody to get confused about that."



(via Backstage at MED)

Tuesday, May 08, 2007

Apple.iPhone=LG.KE850.Clone()

Guess the name of this phone!



No it is not Apple iPhone, it is the LG KE850, aka PRADA PHONE.


From www.macworld.com:

What doesn’t iPhone do? Unlike most smart phones, the iPhone doesn’t have voice-dialing, voice memos, 3G Internet access, Word or Excel support, one-handed operation, or video recording. It can’t be used as a laptop modem. The battery can’t be replaced. It doesn’t support removable storage. The calendar, task list and e-mail won’t sync with Microsoft Outlook.


There're also no third party apps!

Seth Godin's made a challenge on his blog and predicted that Apple will sell 2 millions devices in 2007. However, I'm not sure if there are 2 millions "iWhatever" fans, who will trade 3G,voice-dialing, removable storage and the third party apps for the stylish Apple logo only.. but who knows.
After all, they have some time to the actual release day to think about a lower price, at least.
You may find positive opinoins as well. Check out the Simon's Chen blog

Links

LGKE850 on TrustedReviews.com
Opinion: How Steve Jobs blew his iPhone keynote
Seth Godin Prediction Challenge
Simon's Chen blog

Tuesday, April 10, 2007

SqLite: Improve database experience with managed user-defined functions

Are you using SQLite?

SQLite is a small C library that implements a self-contained, embeddable, zero-configuration SQL database engine.


A good .NET and Compact Framework Providers may be obtained from here

It is very fast! However the speed comes to a price - no foreign keys, no stored procedures, etc.

One of the major challenges with SqLite for me was related to a problem with the ciryllic supopport. In general, if one tries to execute an sql query containing the expression "upper(MyField) = @MyField " may get unexpected result. The SqLite UPPER function has a problem, when dealing with Cyrillic characters.
So is there a solution?
I came with 2 solutions(Both have issues):
1. Store only upper characters in the database and do not use the UPPER function
2. Implement custom managed "Upper" function for SQL:

[SQLiteFunction(Name="CYR_UPPER",Arguments=1,FuncTyp=FunctionType.Scalar)]
public class SqLiteCyrHelper:SQLiteFunction
{
public override object Invoke(object[] args)
{
return args[0]!=null?((string)args[0]).ToUpper():null;
}
}


Then you may use it in the following way:

SELECT * FROM my_cyr_table WHERE cyr_upper(cyr_column) = @cyr_string

This all comes with a performance cost, however it is a very powerful way to enhance the database experience.

SQLite supports custom aggregates , collate and scalar function and the sqlite.phxsoftware.com implementation allows these function to be written in managed code.

UPDATE:

Do not forget to register the function on application startup:
SqLiteCyrHelper.RegisterFunction(typeof(SqLiteCyrHelper));


Links:

Managed SQLite Provider (.NET & compact Framework)

SQLite.org - the offical SQLite web site



Enjoy!

Monday, April 02, 2007

.NET Compact Framework: Mutex vs Critical Section

What do you use for thread synchronization - mutex or critical section?
Check out this blog post from Jeremy Cooke at the Windows CE Base Team Blog

In short:
Using a mutex is more expensive in terms of CPU utilization, but mutexes may be shared outside the processes boundaries.
In .NET CompactFramework terms
Critical section means using System.Threading.Monitor. For mutexes there is a class called System.Threading.Mutex.
The problem here is that there's no easy way to assign a name of the Mutex instance - the constructor with the name argument exists only in the Full .NET version. Using the System.Threading.Mutex class from .NET Compact Framework will prevent you from creating system mutexes - e.g. you can't use the default managed mutex behind the process boundaries.

However there is an implementation from OpenNETCF.org called OpenNETCF.Threading.Mutex2 which may be used to create system-wide named mutexe.


You may see other CF.NET inter-process-communication techniques here as well.

UPDATE
Check this post: SDF 2.2 preview: IPC with EventWaitHandle for yet another IPC method to come in SDF

Links:

Jeremy Cooke about Mutex vs Critical Section
System.Threading.Monitor on MSDN
System.Threading.Mutex on MSDN
OpenNETCF.Threading.Mutex2 from OpenNETCF.org
Interprocess Communication with the .NET Compact Framework 1.0

Windows Mobile vs iPhone or What did Apple invented?

A lot of noise is going around the new tech. miracle called iPhone, announced by Apple.

Some commercial bla bla from their site:

Phone combines three amazing products — a revolutionary mobile phone, a widescreen iPod with touch controls, and a breakthrough Internet communications device with desktop-class email, web browsing, maps, and searching — into one small and lightweight handheld device.


Hey, I had all these features from my first Windows Mobile 2003!
May be the multi-touch display deserves credits (I hate the stylus stuff) , but let's wait the users to tell their words...

Check out the differences between Windows Mobile and this outstanding tech.toy :)
iPhone vs Windows Mobile

Something strange about the Apple media presence:
- Apple released iPod
everybody says it was an outstanding innovation.
as far as I know the PJB-100 is the first commercially sold portable player developed by Compac and marketed by HanGo Electronics Co., Ltd.


- Apple released iPhone
again a miracle , again an innovation
as far as I know "some" of these features were on the market for quite some time :)
Remember?The first idea for multi-touch display is not of Apple.. may be

- Microsoft released Vista
a lot of people claimed that MS stole this and that(search bar, gadgets, etc.). In other words Vista is not an innovation.


I'm starting to think that the only one innovation developed by Apple is a method to manipulate the media and public opinion .. may be Apple (not Edward Bernays) invented PR.

Anyway, the innovation in this business is not only about putting a single never-seen piece in the users' hands. It is more about getting a lot of new small precious pieces together and place it in the hands of the right user...

Friday, February 16, 2007

“How to” Series: Automating Windows Mobile with Windows PowerShell

A lot of noise is going around the Windows PowerShell these days. I like this tool and definitely it may be of use even for the embedded developer.

Are you having some repeating tasks in your daily dev activities? Are you copying files on/from the device, manipulating registry keys, start /stop processes, etc... All these may be automated using Windows PowerShell.

I'll give 2 short examples, here – just to illustrate the idea.

Microsoft provides API called Remote Applications Programming Interface - a.k.a. RAPI. It allows to "touch" the device from the desktop machine, when the device is cradled. It works via ActiveSync or Windows Mobile Device Center on Vista. Unfortunately the RAPI itself is unmanaged and will be a little tricky to use it from a PowerShell script. So, here comes the RAPI class from the OpenNETCF.Desktop.Comunication library - a managed RAPI wrapper.

Example 1: Copying pictures from the device

The following example connects to the cradled device and copies all the pictures located on the device (\My Documents\My Pictures\) in the current location on the desktop

Note that in this example you should have
OpenNETCF.Desktop.Communication.dll placed
in D:\RAPI. You may change the path or think about a smarter assembly loading scheme.

[System.Reflection.Assembly]::LoadFrom("d:\RAPI\OpenNETCF.Desktop.Communication.dll") |Out-null

$rapi = New-Object OpenNETCF.Desktop.Communication.RAPI

$desktopPath = Get-Location

$desktopPath = $desktopPath.Path

$devicePath = "\My Documents\My Pictures\"

echo "Connecting to device..."

$rapi.Connect()

$pictures = $rapi.EnumFiles($devicePath+"*.jpg")

$pictures.Count.ToString()+" pictures found"

echo "-------------------------------"

foreach($f in $pictures)

{

  $remoteFile=$devicePath+$f.FileName

$localFile=$desktopPath+$f.FileName;

"Copying "+$remoteFile+" to "+$localFile

$rapi.CopyFileFromDevice($localFile,$remoteFile,1)

}


 

Example 2: Creating a registry key

This example reads and displays a list of registry keys on the screen – the installed applications in this case. Then it creates a new registry key called "My Key"

Note that in this example you should have
OpenNETCF.Desktop.Communication.dll placed in D:\RAPI. You may change the path or think about a smarter assembly loading scheme.

[System.Reflection.Assembly]::LoadFrom("d:\RAPI\OpenNETCF.Desktop.Communication.dll") |Out-null

echo "---------------------------"

echo "Installed applications list"

echo "---------------------------"

[OpenNETCF.Desktop.Communication.CERegistry]::LocalMachine.OpenSubKey("SOFTWARE\Apps").GetSubKeyNames()

echo "---------------------------"

echo "Create new key "

echo "---------------------------"

[OpenNETCF.Desktop.Communication.CERegistry]::LocalMachine.OpenSubKey("SOFTWARE\Apps").CreateSubKey("MyKey")|Out-Null

echo "My Key" created


 

You may think about automating even more useful and boring tasks - task that you do not want to do manually every day. Explore the OpenNETCF.Desktop.Comunication library to discover even more useful features.

Links:

Windows PowerShell Team's Blog

OpenNETCF.Desktop.Communication library downloads

OpenNETCF.Desktop.Comunication Docs

Enjoy.