2017-02-24 1 views
0

このポストに来てくれてありがとうございます。 は、私は私のスクリプトでエラーを持って、そのログは言う:パスにC#エラー 'C: Windows system32 Com dmp'へのアクセスが拒否されました。Windows起動時に

アクセス 'C:\ WINDOWS \ SYSTEM32 \ ComのDMP \' を拒否されます。

私はWindowsの起動に自分のアプリケーションを設定したいので、そのコンピュータのクライアントが起動したときに、私のソフトウェアが自動的に実行されています。だから、私はこのスクリプトを私のメインロードに入れました。

private void Main_Load(object sender, EventArgs e) 
    { 
     //Menjadikan software ke dalam Startup Windows, sehingga dapat berjalan ketika pc pertama kali dinyalakan 
     RegistryKey reg = Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true); 
     reg.SetValue("PR Reminder", Application.ExecutablePath.ToString()); 
     listMapel(); 
     bool notif = Properties.Settings.Default.Notification; 
     if (notif == true) 
     { 
      checkExpired(); //Mengecek tanggal penyerahan dan pemberian 
     } 

結果は仕事です。しかし、私はこのようなエラーが発生しています。より深く探求した後

Access to the path 'C:\Windows\system32\Com\dmp' is denied.

、問題の中心は、方法listMapel()です。 ここで、彼はローカルディレクトリの.dbで終わるファイルを検索するように任命されました。

なぜこのメソッドにエラーがあるのか​​わかりません。このメソッドを削除しようとすると、起動時にアプリケーションが正常に実行されます。 問題はsystem.ioにあると思います。

これは私のlistMapel()です。方法スクリプト

public void listMapel() 
    { 
     comboListMapel.Items.Clear(); 
     string path = Directory.GetCurrentDirectory(); //Lokal direktori 
     string[] files = Directory.GetFiles(path, "*.db", SearchOption.AllDirectories); 
     foreach (string file in files) 
     { 
      nama = file.Split(".".ToCharArray()); //Hasil result yang ditampilkan Matapelajaran.db (Tapi dengan ini kita mengambil string sebelum .db 
      comboListMapel.Items.Add(Path.GetFileName(nama[0])); 
     } 
    } 
+0

マニフェストを追加してアプリを管理者として実行しようとしましたか? –

+0

このアプリケーションを管理者として実行すると、このアプリケーションはWindows起動時に表示されません。 –

+0

実行ファイルはどこにありますか?私の賭けは、他の場所にあるが、OSによって呼び出される方法は、そのシステムフォルダの作業ディレクトリを含むということです。アクセス権のないシステムディレクトリではなく、exeの実際のディレクトリに何らかの形で作業ディレクトリを指定することができます(ショートカットのやり方に似ています)。これはあなたのexeがそのフォルダの外にあるという前提に基づいています。 IOW 'GetCurrentDirectory'が原因です。現在のディレクトリを設定することができますhttps://msdn.microsoft.com/en-us/library/system.io.directory.setcurrentdirectory(v=vs.110).aspx – pinkfloydx33

答えて

0

あなたは、常に管理者として実行する必要があります。

希望これはlink

を助け、他のone

0

はFileMode.Create、FileAccess.Writeようなあなたのファイルへのアクセスを与える、FileShare.None は、それが動作する可能性がありますこれを試してみてください。

関連する問題