(如果不适用于SO,请参考其他适当的地方,谢谢)。
当使用注册表关联文件扩展名和应用程序时,我输入了我的应用程序的完整文件名,但是这不起作用,只有当我使用8.3文件名时。
例如(取自注册表)这有效:
[HKEY_CLASSES_ROOT\Toto.Document\shell\myVerb\command]
@="C:\\my\\path\\bin\\Debug\\bin\\myexe_~1.EXE /dde"
[HKEY_CLASSES_ROOT\Toto.Document\shell\myVerb\ddeexec]
@="[myVerb(\"%1\")]"
但这不起作用:
[HKEY_CLASSES_ROOT\Toto.Document\shell\myVerb\command]
@="C:\\my\\path\\bin\\Debug\\bin\\myexecutable.EXE /dde"
[HKEY_CLASSES_ROOT\Toto.Document\shell\myVerb\ddeexec]
@="[myVerb(\"%1\")]"
通过右键单击资源管理器中的文件来调用该操作,我收到错误: “Windows无法找到'c:\ users \ me \ desktop \ tata.toto'。请确保正确输入名称,然后重试”。
我正在使用CRegKey以编程方式创建密钥,并使用GetModuleFileName来获取应用程序路径。
2个问题: - 我可能在我的注册表项中丢失了一些东西? (我试过引用路径,但不起作用) - 我可以获得“短”文件名吗? (稍微搜索似乎GetShortPath应该可以工作,但并不总是这样!)
感谢。
最大
(编辑22/03/2011) 我尝试使用引号,但它不起作用(使用/ dde) 我决定使用普通参数代替/ dde,它似乎与正常路径很好地工作(不像上面所说的那样缩短)。
我仍然不确定为什么在创建一个简单的MFC SDI项目时,它会使用旧的短名称而不是长名称来写出注册表值。
再次感谢。
最大
答案 0 :(得分:1)
尝试使用另外两个双引号创建密钥(.EXE
和/dde
之间的注释:
@="C:\\my\\path\\bin\\Debug\\bin\\myexecutable.EXE" "/dde"