It will be a new type of applications that are designed for the new operating system Windows 8 and the new Start menu.

I want to immediately note that despite everything written below - I liked the technology, but the traditional approach of Microsoft - “to do everything well, but something most often used - bad” - is observed in all its glory.
')
If you programmed under WPF or Silverlight, the creation of WinRT (Metro) applications - in terms of programming the interface - will not cause you any difficulties. Moreover, individual new controls make the design of interfaces much easier, but it’s better to read some
useful book .
All the pitfalls - in the other.
Firstly, you can safely forget about the full access to any folders and files on the computer to which the user with whose rights your program is running will get. Yes, even if it is an administrator. And yes! Another surprise - UAC for metro applications also does not work. In the sense that it is now only for ordinary (old) applications.
The second. It is still possible to work with files on a computer, but not without difficulties. In particular, your application may have access to the following locations:
- Libraries: Documents, Videos, Images, Music
- Folder “Downloads” user
- Application folders in user profile
- The folder where your application was installed
- Folder / file shared with you
So let's start point by point.
1. Libraries.
Remember this strange thing, which appeared in Vista, but which almost nobody used?
(Well, at least I definitely didn’t use it - from Far'a this is somehow quite inconvenient)Rejoice! Now you love will have to use them.
Standard applications Music, Video, Photos work only with libraries. Although, of course, you can open any file there, but if you do it from the applications themselves, it is inconvenient, and if you open it through a conductor, well, this is a conductor, it is in itself inconvenient.

However, not everything is so simple - your application needs to explicitly indicate which particular libraries it needs. Moreover, it will receive full and unlimited access and can add / delete / move any files and folders, as well as read and write to any file.
Note: I did not find the information whether it is possible to access the library that the user himself created (that is, not one of the above). At the moment, everything looks like that such access cannot be obtained without the participation of the user.The “Documents” library stands apart, which you won't get access to just like that - you must first specify the file types (extensions) that our application will work with:

Where the library folders are located you don’t need to know - you can access them through the
KnownFolders class
2. Folder “Downloads” user
Well, everything is simple here - write access only. You can create a file without user intervention and write something there.
3. Application folders in user profile
We have two folders: Local and Roaming. One lies on the current computer, the other is moved if the user profile is stored centrally, for example, on a domain controller. In general, everything is as before (see the folder C: \ Users \ ”user” \ AppData \ subfolders Local and Roaming), only now only your application has access to these folders.
4. The folder where your application was installed
Your application has full access to any file / folder and can do whatever it wants with them.
5. Folder / file that the user has given you access to.
And now, in fact, the most interesting.
The only way to get to a folder / file that is not in the places listed above is only through the use of the
FolderPicker and
FilePicker classes .
This is done like this:
FolderPicker fp = new FolderPicker(); fp.ViewMode = PickerViewMode.Thumbnail; fp.FileTypeFilter.Add(".jpg"); StorageFolder folder = await fp.PickSingleFolderAsync(); if (folder == null) return; var files = await folder.GetFilesAsync(); foreach(var file in files) …;
After that, the user will see this window:

And you get full access to the selected user.
By the way, noticed
async / await ?
Get used to it - there are no more synchronous functions. Well, at least those that are most often required. For example, if earlier it was possible to read data from a file in one line of the form:
string[] lines = File.ReadAllLines("filename.txt");
Now it will be something like this:
IList<string> lines = await ReadFileAsync("filename.txt");
By the way, the surprise is no more MessageBox :) Now this again will be something like:
await ShowMessage(“”);
And here we come across another problem: await can only be used in functions marked as async. Naturally, not every function can be so marked.
In this case, it helps to bring all the necessary code into a separate function, and then wait for its completion in the right place:
public async Task<object> MyAsyncFunction() { return await …; } public MySyncFunction() { var res=MyAsyncFunction(); res.Wait(); if(res.Result==...) ...; }
However, such code sometimes hangs, but does not fall. Therefore, debugging it is a pleasure.
Conclusion
As I wrote above - in general, the technology is interesting, however, if your application wants to actively work with files on disks, and even secret from the user, then this is not your choice. But to make an application that will download and draw cats from the Internet, you can literally without touching the keyboard