2010-11-24 25 views
1

gars de g'day,Enregistrement de fichier en C#, Visual Studio 2010, les erreurs

i ont une petite erreur avec mon programme où lorsque je tente d'enregistrer le fichier d'erreur qui dit « Un privilège requis n'est pas détenu par le client. " Je ne sais pas comment résoudre ce problème, car je suis en cours d'exécution de mon ordinateur portable que j'utilise seulement et à moins que j'ai mis en place le statut d'administrateur correctement, je ne sais pas ce qui se passe.

J'ai posté mon code ci-dessous juste pour être sûr

Vive.

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Windows.Forms; 
using System.IO; 
using System.IO.Ports; 
using System.Threading; 

    /// <summary> 
    /// Interaction logic for MainWindow.xaml 
    /// </summary> 
namespace WindowsFormsApplication1 
{ 


    public partial class Form1 : Form 
    { 
     delegate void addlistitemcallback(string value); 
     public static string inputdata; 
     public static int MaximumSpeed, maximumRiderInput, RiderInput, Time, CurrentSpeed, DistanceTravelled, MaximumMotorOutput, MotorOutput, InputSpeed; 
     public static string SaveDataString; 
     public Thread Serial; 
     public static SerialPort SerialData; 
     public static string[] portlist = SerialPort.GetPortNames(); 
     public static string[] SaveData = new string[4]; 
     public static string directory = "C:\\"; 

     public Form1() 
     { 
      Serial = new Thread(ReadData); 
      InitializeComponent(); 
      int Count = 0; 
      for (Count = 0; Count < portlist.Length; Count++) 
      { 
       ComPortCombo.Items.Add(portlist[Count]); 
      } 
     } 

     private void Form1_Load(object sender, EventArgs e) 
     { 

     } 
     private void StartDataButton_Click(object sender, EventArgs e) 
     { 
      SerialData = new SerialPort(ComPortCombo.Text, 19200, Parity.None, 8, StopBits.One); 
      SerialData.Open(); 
      SerialData.WriteLine("P"); 
      Serial.Start(); 
      StartDataButton.Enabled = false; 
      EndDataButton.Enabled = true; 
      ComPortCombo.Enabled = false; 
      CurrentSpeed = 0; 
      MaximumSpeed = 0; 
      Time = 0; 
      DistanceTravelled = 0; 
      MotorOutput = 0; 
      RiderInput = 0; 
      SaveData[0] = ""; 
      SaveData[1] = ""; 
      SaveData[2] = ""; 
      SaveData[3] = ""; 
      SaveDataButton.Enabled = false; 
      if (SerialData.IsOpen) 
      { 
       ComPortStatusLabel.Text = "OPEN"; 
       SerialData.NewLine = "/n"; 
       SerialData.WriteLine("0"); 
       SerialData.WriteLine("/n"); 
      } 
     } 
     private void EndDataButton_Click(object sender, EventArgs e) 
     { 
      SerialData.Close(); 
      SaveDataButton.Enabled = true; 
      //SerialData.WriteLine("1"); 
      //SerialData.WriteLine("0"); 
      if (!SerialData.IsOpen) 
      { 
       ComPortStatusLabel.Text = "CLOSED"; 
      } 
      int i = 0; 
      for (i = 0; i < 4; i++) 
      { 
       if (i == 0) 
       { 
        SaveDataString = "MaximumSpeed during the Ride was = " + Convert.ToString(MaximumSpeed) + "m/h"; 
        SaveData[i] = SaveDataString; 
       } 
       if (i == 1) 
       { 
        SaveDataString = "Total Distance Travelled = " + Convert.ToString(DistanceTravelled) + "m"; 
        SaveData[i] = SaveDataString; 
       } 
       if (i == 2) 
       { 
        SaveDataString = "Maximum Rider Input Power = " + Convert.ToString(maximumRiderInput) + "Watts"; 
        SaveData[i] = SaveDataString; 
       } 
       if (i == 3) 
       { 
        SaveDataString = "Maximum Motor Output Power = " + Convert.ToString(MaximumMotorOutput) + "Watts"; 
        SaveData[i] = SaveDataString; 
       } 
      } 

     } 

     private void SaveDataButton_Click(object sender, EventArgs e) 
     { 
      //File.WriteAllBytes(directory + "image" + imageNO + ".txt",); //saves the file to Disk  
      File.WriteAllLines("C:\\" + "BikeData.txt", SaveData); 
     } 

     public void updateSpeedtextbox(string value) 
     { 
      if (SpeedTextBox.InvokeRequired) 
      { 
       addlistitemcallback d = new addlistitemcallback(updateSpeedtextbox); 
       Invoke(d, new object[] { value }); 
      } 
      else 
      { 
       SpeedTextBox.Text = value; 
      } 


     } 
     public void updatePowertextbox(string value) 
     { 
      if (RiderInputTextBox.InvokeRequired) 
      { 
       addlistitemcallback d = new addlistitemcallback(updatePowertextbox); 
       Invoke(d, new object[] { value }); 
      } 
      else 
      { 
       RiderInputTextBox.Text = value; 
      } 


     } 
     public void updateDistancetextbox(string value) 
     { 
      if (DistanceTravelledTextBox.InvokeRequired) 
      { 
       addlistitemcallback d = new addlistitemcallback(updateDistancetextbox); 
       Invoke(d, new object[] { value }); 
      } 
      else 
      { 
       DistanceTravelledTextBox.Text = value; 
      } 


     } 
     public void updateMotortextbox(string value) 
     { 
      if (MotorOutputTextBox.InvokeRequired) 
      { 
       addlistitemcallback d = new addlistitemcallback(updateMotortextbox); 
       Invoke(d, new object[] { value }); 
      } 
      else 
      { 
       MotorOutputTextBox.Text = value; 
      } 


     } 
     public void ReadData() 
     { 
      int counter = 0; 

      while (SerialData.IsOpen) 
      { 
       if (counter == 0) 
       { 
        try 
        { 
         InputSpeed = Convert.ToInt16(SerialData.ReadChar()); 

         if (CurrentSpeed > MaximumSpeed) 
         { 
          MaximumSpeed = CurrentSpeed; 
         } 
         updateSpeedtextbox("Current Wheel Speed = " + Convert.ToString(InputSpeed) + "Km/h"); 
         DistanceTravelled = DistanceTravelled + (Convert.ToInt16(InputSpeed) * Time); 
         updateDistancetextbox("Total Distance Travelled = " + Convert.ToString(DistanceTravelled) + "Km"); 
        } 
        catch (Exception) { } 
       } 
       if (counter == 1) 
       { 
        try 
        { 
         RiderInput = Convert.ToInt16(SerialData.ReadChar()); 
         if (RiderInput > maximumRiderInput) 
         { 
          maximumRiderInput = RiderInput; 
         } 
         updatePowertextbox("Current Rider Input Power =" + Convert.ToString(RiderInput) + "Watts"); 
        } 
        catch (Exception) { } 
       } 
       if (counter == 2) 
       { 
        try 
        { 
         MotorOutput = Convert.ToInt16(SerialData.ReadChar()); 
         if (MotorOutput > MaximumMotorOutput) 
         { 
          MaximumMotorOutput = MotorOutput; 
         } 

         updateMotortextbox("Current Motor Output = " + Convert.ToString(MotorOutput) + "Watts"); 
        } 
        catch (Exception) { } 
       } 
       counter++; 
       if (counter == 3) 
       { 
        counter = 0; 
       } 
      } 
     }  


     private void Form1_Closed(object sender, EventArgs e) 
     { 
      if (SerialData.IsOpen) 
      { 
       SerialData.Close(); 
      } 
     } 

     private void ComPortCombo_SelectedIndexChanged(object sender, EventArgs e) 
     { 
      StartDataButton.Enabled = true; 
     } 

     private void DistanceTravelledTextBox_TextChanged(object sender, EventArgs e) 
     { 

     } 





    } 
} 

Répondre

2

Vous n'avez probablement pas accès en écriture à C: \. Essayez de remplacer le chemin de sauvegarde par "C: \ Users \ {YouName} \ Documents \ BikeData.txt" à la place.

Ou commencer Visual Studio avec des privilèges d'administrateur en cliquant droit sur son icône et en choisissant "Exécuter en tant qu'administrateur"

+0

Cela semble pour faire le plus de sens ... – IAbstract

0

File.WriteAllLines ("C: \" + "BikeData.txt", SaveData);

File.WriteAllLine (string, string []), par « SecurityException » lorsque l'utilisateur n'a pas le droit d'écrire dans un directrory particulier ou un lecteur de sorte que vous devez donner l'autorisation d'écriture, reportez-vous ce lien File.WriteAllLines