Gdy używam funkcji LogonUser, aby się zalogować na udostępniony folder na innym komputerze w sieci lokalnej to mogę z tego folderu kopiować pliki (chodzi o pliki .avi), ale nie mogę sprawić, aby mój program oddtwarzał te pliki poprzez sieć. Dlaczego? Kiedy klikam przycisk "Play" nic się nie dzieje, ani błędu ani nic?

Chodzi o to, aby uniemożliwić kopiowanie tych filmów.

Poniżej kod:

 
public partial class MainWindow : Window
    {
        DispatcherTimer timer;
        SoddingNetworkAuth SNA;

        public MainWindow()
        {
            InitializeComponent();

            timer = new DispatcherTimer();
            timer.Interval = TimeSpan.FromMilliseconds(500);
            timer.Tick += new EventHandler(timer_Tick);
        }

        void timer_Tick(object sender, EventArgs e)
        {
            slider1.Value = mediaElement1.Position.TotalSeconds;
        }

        private void button1_Click(object sender, RoutedEventArgs e)
        {
            string[] files;
            bool bJestDostep = true;
            SNA = new SoddingNetworkAuth(@"admin", @"kp", @"asd21247");
            
                try
                {
                    files = Directory.GetFiles(@"\\kp\Instalki\Lekcje");
                }
                catch
                {
                    bJestDostep = false;
                }
                

                if (bJestDostep)
                {
                    string strNazwaPliku = ((ListBoxItem)listBox1.SelectedValue).Content.ToString();
                    mediaElement1.Source = new Uri(@"\\kp\Instalki\Lekcje\" + strNazwaPliku + ".avi", UriKind.Absolute);
                    mediaElement1.LoadedBehavior = MediaState.Manual;
                    mediaElement1.UnloadedBehavior = MediaState.Manual;
                    mediaElement1.Play();
                }
        }

        //Play button
        private void button2_Click(object sender, RoutedEventArgs e)
        {
            mediaElement1.Play();
        }

        private void slider1_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
        {
            mediaElement1.Position = TimeSpan.FromSeconds(slider1.Value);
        }

        private void mediaElement1_MediaOpened(object sender, RoutedEventArgs e)
        {
            TimeSpan ts = mediaElement1.NaturalDuration.TimeSpan;
            slider1.Maximum = ts.TotalSeconds;
            timer.Start();
        }

        private void button3_Click(object sender, RoutedEventArgs e)
        {
            SNA.Dispose();
            mediaElement1.Pause();
        }
    }

    public class SoddingNetworkAuth  
    {
        [DllImport("advapi32.dll", SetLastError=true)]  
        private static extern bool LogonUser(string lpszUsername, string lpszDomain, string lpszPassword, int dwLogonType, int dwLogonProvider, out IntPtr phToken);  
        
        [DllImport("kernel32", SetLastError = true )]  
        private static extern bool CloseHandle(IntPtr hObject);  
        private IntPtr userHandle = IntPtr.Zero;  
        private WindowsImpersonationContext impersonationContext;  

        //konstruktor
        public SoddingNetworkAuth(string user, string domain, string password)  
        {  
            if ( !string.IsNullOrEmpty( user ) )  
            {  
                // Call LogonUser to get a token for the user  
                bool loggedOn = LogonUser( user, domain, password,  
                                9 /*(int)LogonType.LOGON32_LOGON_NEW_CREDENTIALS*/,  
                                0 /*(int)LogonProvider.LOGON32_PROVIDER_WINNT50*/,  
                                out userHandle );  
                if ( !loggedOn )  
                    throw new Win32Exception( Marshal.GetLastWin32Error() );  
                // Begin impersonating the user  
                impersonationContext = WindowsIdentity.Impersonate( userHandle );  
            }  
        }  

        public void Dispose()  
        {  
            if (userHandle != IntPtr.Zero)  
                CloseHandle(userHandle);  
            if ( impersonationContext != null )  
                impersonationContext.Undo();  
        }  
    }