En las siguientes líneas:
//Folder.Attributes = FileAttributes.Directory | FileAttributes.Hidden | FileAttributes.System | FileAttributes.ReadOnly;
Folder.Attributes |= FileAttributes.Directory | FileAttributes.Hidden | FileAttributes.System | FileAttributes.ReadOnly;
Folder.Attributes |= ~FileAttributes.System;
Folder.Attributes &= ~FileAttributes.System;
¿Qué significa |=(single pipe igual) y &=(single ampersand igual) en C # 
? Quiero eliminar el atributo del sistema manteniendo los demás ...   
                    
                        c#
                                operators
                                bitwise-operators
                                
                    
                    
                        SilverLight
fuente
                
                
            fuente

x = x | (y);es una mejor manera de describirlo porquex |= y + z;no es lo mismo quex = x | y + z;Folder.Attributes &= ~FileAttributes.System;|es bit a bit o&es bit a bit ya |= bes equivalente aa = a | bexcepto quease evalúa solo una veza &= bes equivalente aa = a & bexcepto quease evalúa solo una vezPara eliminar el bit del sistema sin cambiar otros bits, utilice
~es la negación bit a bit. Por lo tanto, establecerá todos los bits en 1 excepto el bit del sistema.and-Si con la máscara se establecerá el Sistema en 0 y dejará todos los demás bits intactos porque0 & x = 0y1 & x = xpara cualquierxfuente
asolo se evalúe una vez? ¿Por qué se evaluaría más veces que eso?a |= bsignificaa = a || b?Puedes hacer esto así:
fuente
^= bitestablecerá el bit si aún no estaba establecido,&= ~bitno lo establece.