天天看點

winform開機自啟動及 設定後不起作用的問題

以前用winform 進行開機自動啟動,很簡單的,配置下系統資料庫資訊就行了。

最近做了個項目,同樣的代碼,就是不起作用,研究了下,記錄在此。

一.   設定開機自動啟動的代碼

  try

            {

                string path = System.Windows.Forms.Application.ExecutablePath;

                string strnewName = "我的程式名";

                if (!isAuto)

                {

                    //修改系統資料庫,使程式開機時不自動執行。  

                    Microsoft.Win32.RegistryKey Rkey = Microsoft.Win32.Registry.LocalMachine.CreateSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run");

                    Rkey.DeleteValue(strnewName, false);

                     MessageBox.Show("程式設定完成!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);

                }

                else

                {

                    if (!File.Exists(path ))//指定檔案是否存在  

                        return;

                    Microsoft.Win32.RegistryKey Rkey = Microsoft.Win32.Registry.LocalMachine.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true);

                    if (Rkey == null)

                        Rkey = Microsoft.Win32.Registry.LocalMachine.CreateSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run");

                    Rkey.SetValue(strnewName, path);//修改系統資料庫,使程式開機時自動執行。  

                  MessageBox.Show("程式設定完成,重新啟動計算機後即可生效!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);

                }

            }catch(Exception ee)

            {

                MessageBox.Show(ee.Message);

            }

至此,第一步完結,重新開機電腦

二,  重新開機電腦後,msconfig   打開系統配置界面

winform開機自啟動及 設定後不起作用的問題

在此檢視你配置的自動啟動項,如果是win7系統,還有可能因為權限問題,對設定的啟動項不進行加載等問題。 此時使用administrator 登入,在上圖裡的第一個頁籤裡,選擇正常啟動選項即可

三。 如果你的程式還是沒有啟動。

這時候很可能就是使用配置檔案或讀取其他本地檔案的時候,因為路徑問題,導緻的程式錯誤了。

開機自動啟動時,程式直接由系統執行啟動指令,此時如果使用 Environment.CurrentDirectory 可能導緻目錄指向C槽System檔案夾。

是以,在程式裡一般不要使用Environment.CurrentDirectory  ,如果要擷取程式根目錄,還是老實的使用Application.StartupPath 吧

繼續閱讀