Takto. Ve hře je příliš mnoho proměnných.
To s %USERPROFILE%\Desktop nefunguje.
Přesněji nefunguje:
using (System.IO.StreamWriter fileResult = new System.IO.StreamWriter("%USERPROFILE%\\Desktop\\Document.csv", false, Encoding.GetEncoding(1250)))
...
C# Má na toto jinou vychytávku:Environment.GetFolderPath(Environment.SpecialFolder.Desktop)
Takže tebou zamýšlená upravená část pro zápis souboru by vypadala legitimně takhle: using (System.IO.StreamWriter fileResult = new System.IO.StreamWriter(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), false, Encoding.GetEncoding(1250)))
Ovšem tento způsob řešení by se opět nevyhl nutnosti spouštět prográmek jako administrátor. Proč?Protože disk C (respektive disk se systémem Windows) je privilegovaný v tom, že programy již nesmějí zapisovat jinam, než z kama jsou spouštěny.
Toto by šlo opět obejít tím, že by se spustil prográmek z plochy (a zapisoval by tedy do stejného umístění, kde se nachází).
A kdo to zaručí?
Ovšem z časového a praktického důvodu jsem se rozhodl pro disk c:\Document.csv disk C je totiž v systémech Windows přítomen vždy, což o ostatních není pravidlem.
Nejserióznější varianta by byla zobrazit saveFileDialog, kde by si uživatel sám nalistoval cílové umístění, ale to už se mi tam nechtělo přidělávat.