日曆牆紙

工作太忙,好多年沒有寫代碼、博客了,才發現csdn的博客編輯器在IE下已經無法正常使用,時代變化太快,原來適用的東西被時代裹挾,最終被拋棄而無法使用。只是習慣舊的東西,不願意學習,不願意升級,終究還是懶的原因,興趣來了就寫幾行代碼,研究研究,管他最新最熱的技術是什麼,反正也只是愛好而已。

採用c#重新修改之前上傳的VB項目,增加了InstallShield2015項目、visual studio installer 2015項目、卸載安裝包項目,源碼不大,只是附帶桌面壁紙圖片較多。
程序修改完桌面壁紙,立即退出,不長期佔用系統資源。
編程語言:c#.net
實現功能:在桌面右下角牆紙上繪製一個半透明的農曆便箋、右上角牆紙上繪製月曆便箋。使用Microsoft.Win32.TaskScheduler.dll添加計劃任務。
資源包括生成程序和C#.net源代碼

製作程序安裝包,在控制面板的“程序和功能”自定義程序卸載程序,問了度娘都是說修改註冊表HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{Product Code}下的UninstallString爲指定卸載程序的路徑,但就是不成功,捉摸了半天,對比其它程序項,才發現要把WindowsInstaller的值設置爲0才生效,而Installshield生成的安裝包安裝時的值爲1時,讀取的是HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Installer\Products\Product Code相關注冊表項。必須在安裝完成的時候,修改爲0,才起作用。

可惜在window 10 要權限才能更改桌面壁紙。目前在win7下能實現程序所有功能

//HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{FFFFFFFF-AABB-CCDD-EEFF-123456789012}
                string regKey = "";
                RegistryKey localMachineRegistry;
                if (Environment.Is64BitOperatingSystem)         //64位系統
                {
                    localMachineRegistry = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64);
                    regKey = @"SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\" + ProductCode;
                }
                else
                {
                    localMachineRegistry = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32);
                    regKey = @"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\" + ProductCode;
                }
                try
                {
                    RegistryKey UnKey = localMachineRegistry.OpenSubKey(regKey , true);
                    UnKey.SetValue("UninstallString", Application.ExecutablePath, RegistryValueKind.String);
                    //UnKey.SetValue("ModifyPath", Application.ExecutablePath);
                    UnKey.SetValue("WindowsInstaller", 0x00,RegistryValueKind.DWord);               ///查找了半天才知道這個設置爲0,UninstallString設置的才起作用
                    UnKey.SetValue("DisplayIcon", Application.StartupPath + "\\SetWall.dll,-2", RegistryValueKind.String);
                }
                catch (Exception)
                {
                    //throw;
                }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章