【发布时间】:2009-08-16 06:11:23
【问题描述】:
-Edit- 我觉得自己像个白痴。我感觉下面的答案会起作用,但没有看到任何类似于下面答案的谷歌结果。所以当我看到这个复杂的代码时,我认为它必须是这样的。
我搜索并找到了这个Windows: List and Launch applications associated with an extension,但它没有回答我的问题。通过下面的调整,我想出了下面的内容。但是,它卡在图像文件上。 txt 文件运行良好
我将尽快更新此代码以说明带有空格的应用程序路径,但我不明白为什么图像文件无法启动。
static void launchFile(string fn)
{
//majority was taken from
//https://stackoverflow.com/questions/24954/windows-list-and-launch-applications-associated-with-an-extension
const string extPathTemplate = @"HKEY_CLASSES_ROOT\{0}";
const string cmdPathTemplate = @"HKEY_CLASSES_ROOT\{0}\shell\open\command";
string ext = Path.GetExtension(fn);
var extPath = string.Format(extPathTemplate, ext);
var docName = Registry.GetValue(extPath, string.Empty, string.Empty) as string;
if (!string.IsNullOrEmpty(docName))
{
// 2. Find out which command is associated with our extension
var associatedCmdPath = string.Format(cmdPathTemplate, docName);
var associatedCmd = Registry.GetValue(associatedCmdPath, string.Empty, string.Empty) as string;
if (!string.IsNullOrEmpty(associatedCmd))
{
//Console.WriteLine("\"{0}\" command is associated with {1} extension", associatedCmd, ext);
var p = new Process();
p.StartInfo.FileName = associatedCmd.Split(' ')[0];
string s2 = associatedCmd.Substring(p.StartInfo.FileName.Length + 1);
s2 = s2.Replace("%1", string.Format("\"{0}\"", fn));
p.StartInfo.Arguments = s2;//string.Format("\"{0}\"", fn);
p.Start();
}
}
}
【问题讨论】:
-
如果您尝试仅在命令行上为它们编写任何生成的调试语句,这些图像文件会发生什么情况?
-
您只想在 Windows 中启动文件吗?