0

在 Windows Vista (仅限)中,当我在 Windows 资源管理器中双击与我的应用程序关联的文件时,会显示以下消息:

“Windows 找不到“abc.def”。请确保您输入了正确的名称,然后重试。

abc.def 是我在资源管理器中双击的文件。如果我的应用程序尚未运行并且文件确实被正确打开,则它会启动。同样,如果我的应用程序已经在运行,则文件已正确打开。但是总是显示这个错误。

相反,如果我使用“打开方式”并选择我的应用程序,文件将打开并且不显示错误。

我在谷歌上搜索并发现人们在 Word、Excel 文件等中遇到此错误的各种帖子,但没有真正的解决方案。

4

4 回答 4

1

不确定,但您可以在 C# 下使用此代码为您的应用程序注册文件扩展名。您必须以管理员权限运行它

 public class FileRegistrationHelper
    {
        public static void SetFileAssociation(string extension, string progID)
        {
            // Create extension subkey
            SetValue(Registry.ClassesRoot, extension, progID);

            // Create progid subkey
            string assemblyFullPath = System.Reflection.Assembly.GetExecutingAssembly().Location.Replace("/", @"\");
            StringBuilder sbShellEntry = new StringBuilder();
            sbShellEntry.AppendFormat("\"{0}\" \"%1\"", assemblyFullPath);
            SetValue(Registry.ClassesRoot, progID + @"\shell\open\command", sbShellEntry.ToString());
            StringBuilder sbDefaultIconEntry = new StringBuilder();
            sbDefaultIconEntry.AppendFormat("\"{0}\",0", assemblyFullPath);
            SetValue(Registry.ClassesRoot, progID + @"\DefaultIcon", sbDefaultIconEntry.ToString());

            // Create application subkey
            SetValue(Registry.ClassesRoot, @"Applications\" + Path.GetFileName(assemblyFullPath), "", "NoOpenWith");
        }

        private static void SetValue(RegistryKey root, string subKey, object keyValue)
        {
            SetValue(root, subKey, keyValue, null);
        }
        private static void SetValue(RegistryKey root, string subKey, object keyValue, string valueName)
        {
            bool hasSubKey = ((subKey != null) && (subKey.Length > 0));
            RegistryKey key = root;

            try
            {
                if (hasSubKey) key = root.CreateSubKey(subKey);
                key.SetValue(valueName, keyValue);
            }
            finally
            {
                if (hasSubKey && (key != null)) key.Close();
            }
        }
    }    

你这样称呼它

 string extension = ".def";
            string title = "something here";
            string extensionDescription = "some description";
            FileRegistrationHelper.SetFileAssociation(
              extension, title + "." + extensionDescription);
于 2009-08-01T19:14:09.233 回答
0

您是否尝试过将您的应用设置为该文件关联的默认操作?还可以尝试在长名称和 8.3 名称(即 progra~1)之间切换。

于 2009-07-18T18:17:45.943 回答
0

您的应用启动需要多长时间?我在打开一些与 Visual Studio 关联的文件时也看到了这一点。(在我的系统上,VS 有时需要相当长的时间才能启动。)

于 2009-09-12T20:17:29.113 回答
0

今年我遇到了类似的问题,症状相同,我能够通过删除与软件关联的“ddeexec”注册表项来摆脱该消息(在我的情况下:HKEY_LOCAL_MACHINE\SOFTWARE\Classes\your software.Document \Shell\Open\ddeexec)

在此处输入图像描述

于 2014-07-17T17:45:02.220 回答