Windows Vista如何为与我的应用程序关联的文档生成图标?

Windows Vista如何为与我的应用程序关联的文档生成图标?,windows,winforms,windows-vista,icons,embedded-resource,Windows,Winforms,Windows Vista,Icons,Embedded Resource,我能影响这个过程吗? 我有一个内置于.NET3.5/VS2008的应用程序。我将多个图标嵌入到带有win32.res文件的应用程序中。这是在VS2008中项目的“属性”框中完成的-不要指定.ico文件,而是勾选该框以指定.res文件。在.res文件中,可以有多个图标。看看我的意思 每个图标包括一个256x256xRGB(PNG CMoppressed)“Vista级”图像、一个256x256x32位图像,以及各种颜色组合中常见的48x48、32x32和16x16图像级联。 如果我在Explore

我能影响这个过程吗?
我有一个内置于.NET3.5/VS2008的应用程序。我将多个图标嵌入到带有win32.res文件的应用程序中。这是在VS2008中项目的“属性”框中完成的-不要指定.ico文件,而是勾选该框以指定.res文件。在.res文件中,可以有多个图标。看看我的意思

每个图标包括一个256x256xRGB(PNG CMoppressed)“Vista级”图像、一个256x256x32位图像,以及各种颜色组合中常见的48x48、32x32和16x16图像级联。 如果我在Explorer中查看生成的exe,我会看到漂亮的256x256 Vista图像

然后,我可以使用Vista浏览器中的右键单击>“打开方式…”>设置默认程序clickstream,将文件扩展名与我的应用程序关联。但是,在文档旁边显示的图标是应用程序图标的一个小版本,覆盖在看起来像一张带折叠角的白纸上

结果是,当原始图像显示在“小图标”版本中时,原始图像变小,可见。看起来糟透了

我知道完全省略折叠的那张纸是可能的,或者至少可以在上面覆盖一张更大的图像。例如,C#文件的图标有一张折叠的纸,但C#标志很大且可见。我怎么能得到这个?安装WinZip 12时.zip文件的图标较大且可见,并且没有折叠的纸张


文档的图标是否与应用程序的图标不同?在我的应用程序中是否有我必须做的事情,以便注册Vista将用于与我的应用程序关联的文档的图标

注册表中列出了文件扩展名的图标和文件关联。更具体地说,
HKEY\u CLASSES\u ROOT\.ext
条目包含内容类型、感知类型,在
(默认值)
中,值是实际关联。例如,.cs文件的默认值为
VisualStudio.cs.9.0
(我有VS2008)。您可以查看
HKEY\U CLASSES\U ROOT\VisualStudio.cs.9.0
以查看与此文件类型相关的实际图标、程序和命令。特别是,
HKEY\U CLASSES\U ROOT\VisualStudio.cs.9.0\DefaultIcon
是一个条目,它告诉资源管理器要为这种类型的文件显示哪个图标。它指向一个二进制文件和该二进制文件中的资源ID

当您通过右键单击->打开方式…,将文件类型与程序关联时,您不会指定默认图标,因此资源管理器会将应用程序的图标覆盖在通用文档图标上

正确的方法是在设置中包含适当的注册表项,以便将文件类型与应用程序和图标相关联。需要包含的确切注册表值取决于要添加到该文件类型的上下文菜单中的命令,但至少需要Open命令。对于.cs文件,您可以看到有一个条目
HKEY\U CLASSES\U ROOT\VisualStudio.cs.9.0\Shell\Commands\Open
(默认)值,其中包含调用Open命令时要启动的应用程序。(您现在可以忽略
ddeexec
部分)

请记住,
HKEY\u CLASSES\u ROOT
是两个注册表分支的映射视图:
HKEY\u CURRENT\u USER\Software\CLASSES
HKEY\u LOCAL\u MACHINE\Software\CLASSES
。如果您希望您的文件关联适用于所有用户,则需要写入
HKEY\U LOCAL\U MACHINE
。您的安装程序需要以管理员身份运行才能做到这一点。否则,尝试写入
HKEY\U CLASSES\U ROOT
将失败,访问被拒绝,或者写入
HKEY\U CURRENT\U USER
并仅为当前用户执行关联。(这两种情况中到底会发生哪一种取决于几件事,比如操作系统是什么,用户是否是管理员而不是提升的,等等)


您可以在MSDN的一节中阅读所有这些内容。特别是,它将为您提供如何准确执行此操作的基本知识。

WOW!回答得很好。完美的这正是我要找的!