2017-06-25 1 views
-1

Je suis coincé avec mon programme en C#. Donc, l'utilisateur doit appuyer sur un bouton pour créer une chaîne aléatoire (fonctionne bien), il peut ensuite choisir de cliquer sur l'autre bouton. celui-ci ouvre un classialog et le laisse choisir un fichier dll qu'il veut renommer en chaîne aléatoire. Je ne peux pas le faire fonctionner. il dit que ma DLL est déjà en cours d'exécution dans un autre processus (qui ne l'est pas). Toute aide est grandement appréciée :)C#/Renommer dll en utilisant OpenFileDialog

private void btnEncrypt_Click_1(object sender, EventArgs e) 
    { 
     // sets a random string to txtEncrypt.text 
    } 
private void button1_Click(object sender, EventArgs e) 
    { 
     OpenFileDialog MyOpenFileDialog = new OpenFileDialog(); 

     //filedialog 
     MyOpenFileDialog.Filter = "dll files (*.dll) |*.dll";//filter 
     MyOpenFileDialog.Title = "Chose the dll file"; 
     MyOpenFileDialog.InitialDirectory = "C:\\Users\\Gebruiker\\Desktop"; 
     MyOpenFileDialog.FilterIndex = 1; 
     MyOpenFileDialog.RestoreDirectory = true; 

     //if ok 
     if (MyOpenFileDialog.ShowDialog() == DialogResult.OK) 
     { 
      strPath = MyOpenFileDialog.FileName; 
      StreamReader reader = new StreamReader(strPath); 

      System.IO.File.Move(strPath, "C:\\Users\\Gebruiker\\Desktop\\" + txtEncrypt.Text + ".dll"); 
     } 
     else //cancel 
     { 
      strPath = null; 
     } 
+0

'Wich est not' Pensez-vous que NET et l'OS vous mentent? Nothinkg bonne peut venir de laisser les utilisateurs renommer les DLL de toute façon. S'il vous plaît lire [demander] et prendre le [tour] – Plutonix

+2

Oui c'est. Vous l'utilisez en créant un StreamReader. Quel est le point de 'StreamReader' de toute façon? –

+0

Renommer .dlls les rendra essentiellement orphelines. Plus ** kernel32.dll ** obtiendra un peu grincheux – MickyD

Répondre

1

C'est parce que votre StreamReader ouvre le fichier ne peut donc pas être déplacé. Cette ligne ne semble pas faire quoi que ce soit de toute façon, donc vous pouvez probablement l'enlever. remplacer idéalement avec

if (System.IO.File.Exists(strPath)) 
{ 
    System.IO.File.Move(strPath, "C:\\Users\\Gebruiker\\Desktop\\" + txtEncrypt.Text + ".dll"); 
} 
+0

merci fonctionne très bien :) –

1

commentaires Juste l'initialisation de la ligne de lecteur de streem ou le déplacer à côté de la ligne de changement de nom, mais ne pas oublier de passer le nouveau nom