注册表中的一个文件类型怎么删除 http://www.examw.com/microsoft/xinde/162514/ 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 http://blog.sina.com.cn/s/blog_6532295a0100q8hk.html 这是一个开机启动的例子,可以参考这个来实现public static bool AutoRun(bool param) { string strName = Application.ExecutablePath; string strNewName = strName.Substring(strName.LastIndexOf("\\") + 1, strName.LastIndexOf(".") - strName.LastIndexOf("\\") - 1); //指定文件是否存在 if (!System.IO.File.Exists(strName)) return false; 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"); //修改注册表 try { if (param == true) rkey.SetValue(strNewName, strName);//设置开机启动 else rkey.DeleteValue(strNewName);//取消开机启动 return true; } catch { } return false; } 文件关联需要设置如下注册表项 HKCR是HKEY_CLASSES_ROOT WriteRegStr HKCR ".pjt" "" "pjtfile" WriteRegStr HKCR "pjtfile" "" "经济评价工程文件" //文件描述 WriteRegStr HKCR "pjtfile\DefaultIcon" "" "$INSTDIR\main.ico,0" //图标 WriteRegStr HKCR "pjtfile\shell\open\command" "" "$INSTDIR\${PRODUCT_EXE} %1" //双击执行exe,并传入命令行参数写注册表完毕后,需要调用api函数,通知系统刷新显示 SHChangeNotify 我的也是用DeleteSubKeyTree()方法来删除整个子项的但它却抛出了个异常:子项不存在,无法删除子项。但是他确实存在,为什么会这样但是我用regedit工具却能手动删除,导出了该项然后将它删除再手动导入该项这时我上面的这段代码却能实现(不再提示异常)这是为什么,系统对它加密了么,还是我权限没跟好(右键管理员运行生成的exe也不行) 没用啊, 这个好像是如果自己手动设定过打开方式后CurrentVersion\Explorer\FileExts\ 下的.MP3键值系统会优先考虑(难道不是这样的么?)所以我才想删除下该键,但是没成功(就像5楼所说的) 是这样的。Win8 USER项下的子项权限保护得很好的,一般都不允许应用程序操作,这得要经过用户自己的确认。不然谷歌浏览器就不会专门为Win8的系统设置一个程序关联类的工具,用户首次运行时都会弹出一个询问关联的对话框目的就是让用户来手动设置,原因就是这样。这是Win8的一个特点。 请问一本英文书的中文名 我学.net有必要看 《think in java》么? 在存储过程中传入变量@a int 如何将3万条纪录分写到若干个xml文件中去 如何使自己编的控件有小提示(也既ToolTipText)功能? 如何在知道checkbox名称的情况下,将其转换为checkbox控件? 精灵讲话问题 COM组件、Windows集成验证问题 SqlDependency监听具体变更行 WinForm项目打包部署自动更新 ZedGraph绘制曲线时如何时候Timer控件让曲线动起来? 添加菜单图标
public static bool AutoRun(bool param)
{
string strName = Application.ExecutablePath;
string strNewName = strName.Substring(strName.LastIndexOf("\\") + 1, strName.LastIndexOf(".") - strName.LastIndexOf("\\") - 1);
//指定文件是否存在
if (!System.IO.File.Exists(strName))
return false;
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");
//修改注册表
try
{
if (param == true)
rkey.SetValue(strNewName, strName);//设置开机启动
else
rkey.DeleteValue(strNewName);//取消开机启动
return true;
}
catch
{
}
return false;
}
WriteRegStr HKCR ".pjt" "" "pjtfile"
WriteRegStr HKCR "pjtfile" "" "经济评价工程文件" //文件描述
WriteRegStr HKCR "pjtfile\DefaultIcon" "" "$INSTDIR\main.ico,0" //图标
WriteRegStr HKCR "pjtfile\shell\open\command" "" "$INSTDIR\${PRODUCT_EXE} %1" //双击执行exe,并传入命令行参数
写注册表完毕后,需要调用api函数,通知系统刷新显示
SHChangeNotify
但它却抛出了个异常:子项不存在,无法删除子项。
但是他确实存在,
为什么会这样
但是我用regedit工具却能手动删除,
导出了该项
然后将它删除
再手动导入该项
这时我上面的这段代码却能实现(不再提示异常)这是为什么,系统对它加密了么,还是我权限没跟好(右键管理员运行生成的exe也不行)
没用啊, 这个
好像是如果自己手动设定过打开方式后
CurrentVersion\Explorer\FileExts\ 下的.MP3键值系统会优先考虑(难道不是这样的么?)
所以我才想删除下该键,但是没成功(就像5楼所说的)