原总结调试排错troubleshootteklaprocess monitorsysinternals

缘起

最近同事使用.tsep安装Tekla插件的时候,Tekla提示该插件已经存在了,需要卸载后再安装。同事找了半天,没找到怎么卸载,我也没找到。于是决定弄清楚Tekla是 如何判断一个插件安装与否的。 想必看过我其它排错文章的小伙伴已经猜到了,我们今天文章中的主角依然是process monitor。好了,话不多说,好戏马上开始。

调查

在开始调查之前,我们可以先思考下,Tekla是如何判断一个插件安装与否的?

我能想到如下三种可能:

  • 通过读取注册表来判断。
  • 通过配置文件来判断。
  • 通过加载特定目录下符合条件(e.g. 导出某些约定好的接口)的文件来判断。

这三种情况,我们都可以通过process monitor监控到。

捕获Tekla操作记录

打开process monitor,开始监视。然后双击.tsep进行安装,当弹出错误对话框的时候,关闭process monitor监视。

过滤我们关心的记录

process monitor会捕获超级多的事件。如果不能进行有效的过滤,想找到我们关心的事件,无异于大海捞针。但是我们要根据什么条件来过滤呢?

首先,我们需要根据进程名进行过滤,但是我们怎么知道安装程序对应的进程名呢? process monitorInclude Process From Window功能可以很方便的帮我们根据窗口找到其对应的进程。按住该按钮(大写字母A右侧,像靶子的那个按钮),拖动到目标窗体,松开即可。如下图:

除了根据进程名过滤,我们还需要根据其它条件进一步过滤。我们的过滤条件大概是这样的:

  • Process Name只关心TsepFileDispatcher.exe
  • Event Class只关心RegistryFile System,不关心NetworkProcess and Thread
  • Operation排除Write相关事件,只关心Read相关事件即可。
  • Path排除以.dll.exe结尾的路径,并且排除windows.net相关的路径。
  • Result只关心SUCCESS类型的。

下图是我们刚刚设置的过滤规则(为了突出重点,我删掉了process monitor自带的过滤规则)。

经过以上过滤,剩下的事件就很少了,我们可以分别查看RegistryFile System的事件。我们先看File System事件。


interested-readfile-event

当我看到

C:\ProgramData\Tekla Structures Learning\2018\Extensions\Installed\{叠合板模板}{1.0}{73703402-ee5b-4058-bf6a-ad1077481245}\Manifest.xml

这条记录的时候,我猜测Tekla会把插件装在子目录Extensions\Installed下,我要安装的插件标识符是叠合板模板,版本是{1.0},对应的GUID{73703402-ee5b-4058-bf6a-ad1077481245}

{% note info %}

说明: 为什么不看Registry事件呢?因为我找了一圈,没有很容易的在里面找到我关心的事件。

{% endnote %}

大功告成

至此,我们已经找到了我们关心的事件。使用Everything在本地搜索叠合板模板,删除所有搜到的记录。再次双击.tsep文件进行安装,顺利完成。

[原]排错实战——解决Tekla通过.tsep安装插件失败的问题的更多相关文章

  1. 解决mac下atom安装插件失败问题

    activate-power-mode的超炫编辑效果打动了我,花时间安装了atom,之后在package,install里面找到了这个插件,但是安装失败,如下图所示: gyp info it work ...

  2. 解决sublime text无法安装插件问题

    解决sublime text无法安装插件问题最近在sublime text3中使用命令ctrl+shift+p命令安装插件发现不能安装了,一会儿报错 这个错误表示没有可用的安装包,经过一番探索发现是配 ...

  3. Docker 安装 Jenkins , 并解决初始安装插件失败

    安装 Jenkins 后,初始化下载插件总是失败,导致安装不成功,重试好几次都是卡在安装插件那. 这里记录下 Docker 下怎么安装 Jenkins ,并解决初始安装插件失败问题. 安装插件失败,其 ...

  4. atom安装插件失败 latex

    用atom写latex 链接 http://www.cnblogs.com/schaepher/p/5934184.html 但在gui下安装插件失败 按照以下步骤解决了 安装gitbash cd . ...

  5. Sublime Text 2 windows8安装插件失败解决

    事件是这样的: 1.安装Package Control组件后, 2.调出Install Package选项安装插件,状态栏显示成功, 3.但打开Packages目录也看不到,Sublime插件管理也没 ...

  6. Android Studio 2.3 解决小米手机调试安装apk失败问题

    在开发者选项里面,拉到底,把miui优化选项去掉就好了. 参考资料 [问题反馈] Android Studio 2.3 在红米note3手机中 调试安装Apk失败

  7. sublime Text3安装及配置与解决安装插件失败

    1.下载sublime Text3的官网:https://www.sublimetext.com/32.安装Package Control   下载Package Contoral地址: 链接:htt ...

  8. 解决IDEA的plugins安装插件很慢、不成功问题

    1.修改hosts文件 路径:C:\Windows\System32\drivers\etc 52.84.224.36 plugins.jetbrains.com 重启IDEA,再次安装插件时,芜湖~ ...

  9. eclipse问题解决(link方式安装插件失败)

    使用 link 方式,离线安装 eclipse 插件时,经常失败. 一.常见的失败情况 link方式配好后,eclipse 启动,没有弹出任何信息. 查看当前工作空间——.metadata——.log ...

随机推荐

  1. Java中的static关键字和new关键字作用介绍

    一.static关键字的作用 1.可以用于修改类的成员变量.代码块和类 通过static可以将类的成员声明为静态成员,静态的成员归属于整个类,而不是属于某个对象.无论通过类还是对象访问静态成员,操作的 ...

  2. SciKit-Learn 数据集基本信息

    ## 保留版权所有,转帖注明出处 章节 SciKit-Learn 加载数据集 SciKit-Learn 数据集基本信息 SciKit-Learn 使用matplotlib可视化数据 SciKit-Le ...

  3. spring boot 连接Mysql介绍

    Spring Boot 集成教程 Spring Boot 介绍 Spring Boot 开发环境搭建(Eclipse) Spring Boot Hello World (restful接口)例子 sp ...

  4. C# Stream篇(六) -- BufferedStream

    BufferedStream 目录: 简单介绍一下BufferedStream 如何理解缓冲区? BufferedStream的优势 从BufferedStream 中学习装饰模式 如何理解装饰模式 ...

  5. Banner信息收集和美杜莎使用(9.26 第十二天)

    Banner信息收集 Banner信息,欢迎语,在banner信息中可以得到软件开发商.软件名称.版本.服务类型等信息,通过这些信息可以使用某些工具直接去使用相对应的exp去攻击 前提条件:需要和目标 ...

  6. C语言数组的所有元素初始化成相同的值

    这个问题一直困扰了我很久,我向来都用for来控制置-1:因为我不会用memset(つ﹏⊂)我是个蒟蒻.今天终于学会了一点皮毛,赶紧记录一下 方法一: 简单粗暴,快捷有效.for循环一点点的置1,这个方 ...

  7. 网络基础:OSI 七层模型、TCP/IP 四层模型

    1.Internet历史 1. 1968年由美国ARPA机构提出"资源共享计算机网络”,让ARPA的计算机互联起来,叫做阿帕网;2. 1974年,第一个TCP协议详细说明发布了.3. 一个 ...

  8. Codeforces 442A Borya and Hanabi

    有五种花色 外加 五种点数 共25张牌,每次有n张牌,主人知道这n张牌中有哪些牌,并且哪种牌有几张,但是不知道具体是哪张牌,他可以问某种花色,然后知道了哪几张是该花色,也可以问点数,然后就知道了哪几张 ...

  9. hive的join优化

    “国际大学生节”又称“世界大学生节”.“世界学生日”.“国际学生日”.1946年,世界各国学生代表于布拉格召开全世界学生大会,宣布把每年的11月17日定为“世界大学生节”,以加强全世界大学生的团结和友 ...

  10. Android进阶——多线程系列之异步任务AsyncTask的使用与源码分析

    AsyncTask是一种轻量级的异步任务类,它可以在线程池中执行后台任务,然后把执行的进度和最终结果传递给主线程并主线程中更新UI,通过AsyncTask可以更加方便执行后台任务以及在主线程中访问UI ...