“Windows(Vista)无法找到”abc.def“。请确保正确输入名称,然后重试。”

时间:2009-07-16 22:38:46

标签: windows-vista file-association

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

  

“Windows无法找到”abc.def“。制作   确保你正确输入了名字   然后再试一次。

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

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

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

4 个答案:

答案 0 :(得分: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);

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

今年我遇到了类似的问题,出现了相同的症状,我通过删除" ddeexec"来解决这个问题。与软件相关的注册表项(在我的例子中:HKEY_LOCAL_MACHINE \ SOFTWARE \ Classes \ your software.Document \ Shell \ Open \ ddeexec)

enter image description here