在Windows Vista (仅限)中,当我双击与我的应用程序关联的Windows资源管理器中的文件时,将显示以下消息:
“Windows无法找到”abc.def“。制作 确保你正确输入了名字 然后再试一次。
其中abc.def是我在资源管理器中双击的文件。我的应用程序启动,如果它尚未运行并且文件确实正确打开。同样,如果我的应用程序已在运行,则文件正确打开。但是始终会显示此错误。
如果我使用“打开方式”并选择我的应用程序,文件将打开并且不会显示错误。
我用谷歌搜索并发现人们收到Word,Excel文件等错误的各种帖子,但没有真正的解决方案。
答案 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)