日历墙纸

工作太忙,好多年没有写代码、博客了,才发现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;
                }

 

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