什么是Up!?!
你好。当有人说时,我喜欢它;
“ [...]如何调试它?”
我实际上没有安装Windows 8安装程序,也没有安装Windows 8,因此我将假定与它的前代产品有一些基本的相似之处。在进行假设时,我会尝试提出假设。
发号施令
根据您对问题的描述,我的猜测是系统无法在注册表中记录正确的条目,因此当您在先前执行“ open with ...”之后运行“ open”时,您会看到该应用程序上次选择。
我将引导您解决您的问题,并证明或反对我的最初猜测。如果您不需要下面的所有详细说明,则可以跳过/向下浏览到“侦察”部分,我们将在此处开始尝试发现问题。
快速修复
在我们进行下面介绍的更复杂的步骤之前,您应该首先研究“ 控制面板”中的“ 默认程序”界面。通过“使用...打开”菜单,您可以获得类似的效果,但是您已经说过这对您不起作用。**请确保您正在设置复选框,该复选框指示记住将您的设置作为所选应用程序的默认应用程序。
在“ 控制面板 ”中的“ 默认程序”界面下,可能有一些选项可让您“重置默认值”或恢复为以前的版本。您可以考虑以下各种选项,以查看它们是否可以解决您的问题。首先执行这些操作,因为它们将是最简单的修复程序。如果它们不起作用,则应继续以下选项。
假设条件
这些是我可以预见的假设。如果其中任何一个都不可行,请告诉我,如果需要的话,我将花时间设置Windows 8安装。
注册表
我认为,我所做的最大假设是操作系统仍然使用注册表,并且在我举几个例子的地方,我假设Windows 8中的注册表目录布局/结构也与其以前的版本相似。
命令
就个人而言,我通常更喜欢命令提示符,因此我可能会在终端会话的上下文中描述步骤。我假设Windows 8仍然具有cmd.exe;如果没有的话,我真的会感到惊讶。
注册表编辑器
如果有注册表,则可能有一个查看/编辑注册表的工具。我将假定GUI和命令行工具的名称与以前的名称相同。
用户权限
我将假定以提升的特权调用Shell的方法与OS的前任足够相似,您将知道该怎么做。如果我不在这里,请向我详细说明,我会尽力而为。
SysInternals套件
如果Windows 8中不提供这些功能,我将感到非常失望。我无法相信它们将不可用,因为它们对于开发人员/ 质量检查周期至关重要,因此Microsoft和第三方开发人员都会经历。
WinDbg.exe,DDK和SDK
我假设您尚未安装这些工具。没关系。我们可能不需要这些重型工具就能解决此问题。首先浏览“ 侦察”部分,如果您需要(或只是想)更深入,那么将讨论这些工具。
侦察
始终首先尝试以最简单的方式完成任务。从Windows调试器开始,对于一个起点来说可能会过分杀人,并且发现相关事件的片段/顺序会有些困难。
如果尚未下载并安装SysInternals Suite,则应该立即进行。至少最先需要使用Process Explorer和Process Monitor来发现问题所在。这两个工具都是该套件的一部分,您可以将其下载为* .zip文件,但是如果网络连接较差,则可以选择单独下载这两个工具以更快地完成安装。
将套件/工具解压缩到系统上的适当位置(主要是您的个人喜好)。如果使用默认的Windows解压缩实用程序,则需要在解压缩存档之前删除区域文件。该区域文件是操作系统如何知道“这个文件是从互联网上下载运行风险自担[...]取消选中框[...] [...]”。我确定您之前在弹出框中看到过类似的消息。弹出式窗口的左下方通常会有一个小复选框,如果您将其切换一次,它将记住您的决定。
查看该复选框的另一种方法是,在下载的文件上右键单击->属性。该复选框应位于“ 常规”选项卡的底部。一次切换该复选框将从二进制文件中删除区域文件(作为一个补充说明,区域文件存储在有问题的二进制文件的备用数据流中-但这是另一个讨论。现在,只需使用弹出窗口或文件属性接口可操作区域文件。
确保使用默认的Windows zip工具将区域文件从* .zip存档中删除之前,先将其解压缩。如果您没有将其从* .zip文件中删除,则ZIP实用程序将使用区域文件标记每个解压缩的文件,然后很难获得您在套件中运行的二进制文件的弹出窗口。
我们将首先使用两种工具:* Process Explorer(procexp.exe)* Process Monitor(procmon.exe)
如果您想了解更多关于它们的信息,可以参考相应的* .chm文件。我们将从Process Explorer开始,如果我们不能快速发现问题,那么我们将转到Process Monitor(运行起来要涉及更多一点),如果仍然无法解决问题,我们将进行讨论。关于拔出大枪。但是事实是,我经常在侦察阶段找到需要了解的内容,而无需启动调试器。
背景与理解
注册表是系统存储将文件扩展名与知道如何处理它们的应用程序相关的映射的位置。例如,您可以使用命令行工具ftype和assoc来查看/操作应用程序扩展的映射。
要查看与扩展名“ .txt”关联的文件类型,请从终端执行以下命令。
$> assoc .txt
.txt=txtfile
这表明.txt文件扩展名已分配给文件类型的txtfile类。然后,查看与txtfile类关联的应用程序,执行命令
$> ftype txtfile
txtfile=%SystemRoot%\system32\notepad.exe %1
这些工具只是在读取系统的注册表设置。您可以使用reg.exe之类的工具自己查看它们,您可以从终端上执行它们,或者大多数人更喜欢GUI注册表编辑器regedit.exe。在该位置,您将看到一些扩展名,文件类型类和应用程序关联,只需在HKEY_CLASSES_ROOT配置单元下查找即可。在该配置单元的正下方,您应该找到“ .txt”和“ txtfile”的密钥,当然还有更多。
这是使用assoc和ftype实用程序的更多示例。
确保您正在为assoc提供扩展。我想您已经知道这一点,但是要明确的是文件扩展名是终止文件名的“点后跟3或4个字符”。例如,application.exe,document.txt或presentaion.ppt。该assoc命令实用程序需要你提供的“” 并以3/4个字符作为参数。
$> assoc .exe
.exe=exefile
$> assoc .txt
.txt=txtfile
单独且不同的从文件扩展名存在的文件类型。可以将多个文件扩展名分组为一个文件类型。考虑“ .html”和“ .htm”如何映射到相同的文件类型;即“ htmlfile”。下面的示例试图进一步说明这一点。
$> assoc .html
.exe=htmlfile
$> assoc .htm
.txt=htmlfile
$> ftype htmlfile
htmlfile="C:\Program Files (x86)\Internet Explorer\iexplorer.exe" -nohome
此外,请注意,注册表在HKEY_CLASSES_ROOT配置单元下包含以下项。
- HKCR.html
- HKCR.htm
- HKCR \ html文件
如果您有方便的方法上载/附加/共享txt文件,请运行以下命令,我将查看它们创建的输出。
$> cd \somewhere\easy\for\you\to\find\
$> assoc > extension_associations.txt
$> ftype > filetype_handlers.txt
现在,您应该能够打开将这些文件写入其中的文件夹并共享它们。以下命令也应该打开文件(如果您似乎可以找到创建的文件)。
$> notepad \somewhere\easy\for\you\to\find\extension_associations.txt
$> notepad \somewhere\easy\for\you\to\find\filetype_handlers.txt
如果您无法与我共享整个* .txt文件,则至少运行这两个命令并将其结果放入注释中。
$> assoc .txt
.txt=textfile
$> ftype textfile
textfile="C:\Program Files (x86)\Notepad++\notepad++.exe" "%1"
如果您在此处看不到任何内容,则应先将其设置为某些内容。进行这些更改时,请确保您具有提升的特权(即管理员特权),否则它们可能无法按预期工作。
流程浏览器
如果需要的话
过程监控器
如果需要的话
安装Windows调试环境