i dont know how you would show/hide the desktop icons using C#, however i have read a few articles about how to do it using the resistry keys. the problem with using the registry keys method is that the "Explorer.exe" process would have to be restarted in order for the changes to take affect. luckily i found a code sample online that does just that:
On Error Resume Next
Kill Explorer.exe
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\" & strComputer & "
ootcimv2")
Set colProcessList = objWMIService.ExecQuery _
("Select * from Win32_Process Where Name = explorer.exe ")
For Each objProcess in colProcessList
objProcess.Terminate(1)
Next
Launch Explorer.exe
Set objShell = CreateObject("Wscript.Shell")
objShell.Run "explorer.exe"
Set objShell = Nothing
Wscript.exit
That script will quickly restart the "Explorer.exe" process without logging the current user off.... Hope it Helps!