2016-04-23 15 views
0

リリースビルドとしてexeにビルドしたプログラムを作成しました。 exeをダブルクリックすると、プログラムは起動時に自動的に追加されるので、PCが起動するたびにプログラムが実行されます。ただし、エラーが発生していないにもかかわらず、起動時に追加されることはありません。プログラムは期待どおりに実行されます。このコードは、メインの「プログラム」クラス内に記述されています...スタートアップにプログラムを追加する

public static void AddApplicationToStartup() 
{ 
    using(RegistryKey key = Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true)) 
    { 
     key.SetValue("WindowsProcesses", "\"" + Application.ExecutablePath + "\""); 
    } 

} 

この

は、スタートアップにプログラムを追加する処理するコードです。

+1

「key.SetValue」のエラーチェックはどこですか? 'WindowsProcesses'は存在しますか?もしそうなら、あなたの価値はそこに加えられますか? (実際には、 'OpenSubKey'のエラーチェックはどこですか?) –

+2

これをしないでください。これはプログラムの悪い動作です。 –

+0

ここには、C#からこれを実現するための優れたCodePlexの記事があります。この記事は非常に単純ですが、基本的にWindows DLLを使用してショートカットを作成しています。 http://www.codeproject.com/Articles/146757/Add-Remove-Startup-Folder-Shortcut-to-Your-App –

答えて

0

追加アプリケーションのパス、このよう

public static void AddApplicationToStartup() 
     { 

      using (RegistryKey key = Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true)) 
      { 
       key.SetValue("WindowsProcesses", Application.ExecutablePath.ToString()); 
      } 

     } 
+0

OKは正しく編集されました。ありがとうございます – Mostafiz

+0

3行目に最後に括弧がありませんが、このコードは 'Microsoft.Win32.RegistryKey'から 'string'に変換できません。 –

+0

@OliverDungey私のコードを更新しました。例外をスローしません – Mostafiz

-1

私は私のプログラムのためにこれを使用し、それは私のために完全に正常に動作します。実行可能ファイルを受け取り、起動レジストリがあるシステムレジストリへの参照を追加します。この場合、実行ファイル名は「Lemon Soda.exe」となりました。

string fileName = @"\Lemon Soda.exe"; 
string targetPath = Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData); 

RegistryKey registryKey = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true); 
registryKey.SetValue("Lemon Soda", targetPath + fileName); 
registryKey.Close(); 
+0

エラーは表示されませんでしたが、問題は修正されませんでした。 –

関連する問題