c#怎么获取所有文件的打开方式

Doublehappywolf 2009-07-10 09:44:26
现在有一个文件,可能要用不同的方式打开,怎样获取本地机上所有的文件打开方式。
就像我们平时打开文件时右击时选择打开方式选择其中一个来打开文件
忘高手赐教
...全文
1574 31 打赏 收藏 转发到动态 举报
写回复
用AI写文章
31 条回复
切换为时间正序
请发表友善的回复…
发表回复
xue12300 2010-11-26
  • 打赏
  • 举报
回复
怎么没高手做过吗?
zerodegrees 2010-04-16
  • 打赏
  • 举报
回复
和我问题有点像,帮顶接分
Doublehappywolf 2009-07-29
  • 打赏
  • 举报
回复
自己顶一下阿啊
Doublehappywolf 2009-07-28
  • 打赏
  • 举报
回复
[Quote=引用 27 楼 faib920 的回复:]
先搜索HKEY_CLASS_ROOT下的所有以.开头的键的默认值,再在HKEY_CLASS_ROOT下查找
比如.bat文件,默认值为batfile,在HKEY_CLASS_ROOT\batfile\shell\open\command下就是这种类型文件的打开方式
[/Quote]
能不能用代码的方式写出来啊?
谢了
Doublehappywolf 2009-07-26
  • 打赏
  • 举报
回复
谢谢帮顶的同志们!
高手出来啊!
faib920 2009-07-26
  • 打赏
  • 举报
回复
先搜索HKEY_CLASS_ROOT下的所有以.开头的键的默认值,再在HKEY_CLASS_ROOT下查找
比如.bat文件,默认值为batfile,在HKEY_CLASS_ROOT\batfile\shell\open\command下就是这种类型文件的打开方式
燃烧的荷尔蒙 2009-07-25
  • 打赏
  • 举报
回复
高手呢?高手在哪里??
帮顶~!
Doublehappywolf 2009-07-25
  • 打赏
  • 举报
回复
等待答复啊!望高手顶一下啊!
Doublehappywolf 2009-07-24
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 chrisak 的回复:]
引用 12 楼 doublehappywolf 的回复:
引用 9 楼 yulinlover 的回复:
System.Dialogtistic.Process.Start("你的文件")
它自己会去调用系统的打开功能,如果没有默认关联,它也会弹出框让你去选择一个程序来打开。

这个我知道,我现在就是想把windows自带的这个文件打开方式对话框调出来,然后选择不同的打开方式来打开文件,望哪位高手不吝赐教!万分感谢!
原来你只是想打开选择打开程序的那个系统对话框啊?
那个要调用一条Shell的函数SHOpenWithDialog
[/Quote]
回复18楼
我不仅想打开该系统的对话框,我还想当选择哪个打开程序时就能把我的要打开的文件用该程序打开,望高手指点,小弟没有接触过SHELL方面的编程,望给予点详细的介绍,或该看什么书,万分感激!
jdbcodbc 2009-07-23
  • 打赏
  • 举报
回复
UP
LQknife 2009-07-23
  • 打赏
  • 举报
回复
帮顶
NealXX 2009-07-23
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 yulinlover 的回复:]
System.Dialogtistic.Process.Start("你的文件")
它自己会去调用系统的打开功能,如果没有默认关联,它也会弹出框让你去选择一个程序来打开。
[/Quote]
ChrisAK 2009-07-23
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 doublehappywolf 的回复:]
引用 9 楼 yulinlover 的回复:
System.Dialogtistic.Process.Start("你的文件")
它自己会去调用系统的打开功能,如果没有默认关联,它也会弹出框让你去选择一个程序来打开。

这个我知道,我现在就是想把windows自带的这个文件打开方式对话框调出来,然后选择不同的打开方式来打开文件,望哪位高手不吝赐教!万分感谢!
[/Quote]原来你只是想打开选择打开程序的那个系统对话框啊?
那个要调用一条Shell的函数SHOpenWithDialog
windhuan 2009-07-23
  • 打赏
  • 举报
回复
这个是 典型的 shell 编程 建议楼主去看这方面的知识
Doublehappywolf 2009-07-20
  • 打赏
  • 举报
回复
望继续回帖啊!问题没解决掉啊!
Doublehappywolf 2009-07-20
  • 打赏
  • 举报
回复
望继续回帖啊!问题没解决掉啊!
Doublehappywolf 2009-07-20
  • 打赏
  • 举报
回复
望继续回帖啊!问题没解决掉啊!
周公 2009-07-16
  • 打赏
  • 举报
回复
下面的代码示例演示如何在 HKEY_CURRENT_USER 下创建一个子项,处理相应的内容,然后删除该子项。

using System;
using System.Security.Permissions;
using Microsoft.Win32;

[assembly: RegistryPermissionAttribute(SecurityAction.RequestMinimum,
ViewAndModify = "HKEY_CURRENT_USER")]

class RegKey
{
static void Main()
{
// Create a subkey named Test9999 under HKEY_CURRENT_USER.
RegistryKey test9999 =
Registry.CurrentUser.CreateSubKey("Test9999");
// Create two subkeys under HKEY_CURRENT_USER\Test9999. The
// keys are disposed when execution exits the using statement.
using(RegistryKey
testName = test9999.CreateSubKey("TestName"),
testSettings = test9999.CreateSubKey("TestSettings"))
{
// Create data for the TestSettings subkey.
testSettings.SetValue("Language", "French");
testSettings.SetValue("Level", "Intermediate");
testSettings.SetValue("ID", 123);
}

// Print the information from the Test9999 subkey.
Console.WriteLine("There are {0} subkeys under {1}.",
test9999.SubKeyCount.ToString(), test9999.Name);
foreach(string subKeyName in test9999.GetSubKeyNames())
{
using(RegistryKey
tempKey = test9999.OpenSubKey(subKeyName))
{
Console.WriteLine("\nThere are {0} values for {1}.",
tempKey.ValueCount.ToString(), tempKey.Name);
foreach(string valueName in tempKey.GetValueNames())
{
Console.WriteLine("{0,-8}: {1}", valueName,
tempKey.GetValue(valueName).ToString());
}
}
}

using(RegistryKey
testSettings = test9999.OpenSubKey("TestSettings", true))
{
// Delete the ID value.
testSettings.DeleteValue("id");

// Verify the deletion.
Console.WriteLine((string)testSettings.GetValue(
"id", "ID not found."));
}

// Delete or close the new subkey.
Console.Write("\nDelete newly created registry key? (Y/N) ");
if(Char.ToUpper(Convert.ToChar(Console.Read())) == 'Y')
{
Registry.CurrentUser.DeleteSubKeyTree("Test9999");
Console.WriteLine("\nRegistry key {0} deleted.",
test9999.Name);
}
else
{
Console.WriteLine("\nRegistry key {0} closed.",
test9999.ToString());
test9999.Close();
}
}
}


读注册表、写注册表、删除注册表的数据的用法都有了。
周公 2009-07-16
  • 打赏
  • 举报
回复
RegistryKey 类 :表示 Windows 注册表中的项级节点。此类是注册表封装。
注册表充当计算机上操作系统和应用程序的中央信息储存库。注册表根据存储在其中的元素的逻辑顺序,以分层形式组织(有关该层次结构中的基级项,请参见 Registry)。在注册表中存储信息时,请根据存储的信息类型选择适当的位置。一定要避免损坏由其他应用程序创建的信息,原因是这样会导致那些应用程序出现意外的行为,并且还会对您自己的应用程序带来不利影响。

注册表项是注册表中的基本组织单位,好比是 Windows 资源管理器中的文件夹。每个具体的注册表项都可以有子项,就像文件夹下可以有子文件夹一样。只要用户具有相应的权限,且注册表项不是基项或基项的下一级项,就可以删除该注册表项。每个注册表项也可带有与其相关联的多个值(一个值就好比是一个文件),它们用于存储信息,例如,有关计算机上安装的应用程序的信息。每个值存储特定的信息,可按需要对其进行检索或更新。例如,可以为您的公司创建一个 RegistryKey(在项 HKEY_LOCAL_MACHINE\Software 下),然后为您的公司创建的每个应用程序创建一个子项。每个子项保存特定于该应用程序的信息,如颜色设置、屏幕位置和大小或者可识别的文件扩展名。
Doublehappywolf 2009-07-16
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 yulinlover 的回复:]
System.Dialogtistic.Process.Start("你的文件")
它自己会去调用系统的打开功能,如果没有默认关联,它也会弹出框让你去选择一个程序来打开。
[/Quote]
这个我知道,我现在就是想把windows自带的这个文件打开方式对话框调出来,然后选择不同的打开方式来打开文件,望哪位高手不吝赐教!万分感谢!
加载更多回复(11)

110,555

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧