0

Windows Vista (のみ)で、アプリケーションに関連付けられている Windows エクスプローラーのファイルをダブルクリックすると、次のメッセージが表示されます。

"Windows は "abc.def" を見つけることができません。名前を正しく入力したことを確認してから、もう一度やり直してください。

abc.def は、エクスプローラーでダブルクリックしたファイルです。まだ実行されていない場合、アプリが起動し、ファイルが正しく開かれます。同様に、アプリが既に実行されている場合、ファイルは正しく開かれます。しかし、このエラーは常に表示されます。

代わりに「Open With」を使用してアプリを選択すると、ファイルが開き、エラーは表示されません。

私はグーグルで検索し、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 に答える