红联Linux门户
Linux帮助

ubuntu下禁止TeamViewer开机自启分析

发布时间:2015-10-05 15:55:39来源:linux网站作者:gsls200808

由于习惯在Windows下用TeamViewer,所以我在ubuntu下也装上了TeamViewer(deb包),可是TeamViewer开机自启选项怎么也改不了,查查进程和安装目录,才发现TeamViewer是在wine下运行的。好吧,先回到windows下分析分析。

TeamViewer官方下载页面:http://www.teamviewer.com/zhcn/download/linux.aspx


一.Windows下分析TeamViewer开机自启项,不想看的可以略过

1.对大多数软件来说,如果软件界面中提供了开机自启选项,那么设置开机自启的配置文件要么是软件的相关文件目录,要么是注册表
TeamViewer这个软件提供了开机自启选项,那么它究竟是在哪配置的呢?
我们这里用到一个工具ProcessMonitor(有些人称它为Procmon)
软件引用页:  http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx
下载地址:http://download.sysinternals.com/files/ProcessMonitor.zip
打开之后我们会看到一大堆事件,这时我们就要设置过滤器了。
首先我们过滤要监控的进程

2.使用Procmon中的过滤器过滤进程
点击倒三角
点击Architecture旁边的箭头,选择Process Name,
点击is旁边的箭头,选择begins with,
在文本框中输入TeamViewer
点Add,点OK,这样我们就过滤出以TeamViewer开头的两个进程TeamViewer.exe和TeamViewer_Service.exe了
但是过滤出来的事件还是有点多。
由于我们只关注注册表和文件系统的读写操作,我们依次点击工具栏的后三个按钮(分别是网络,进程,性能)
 
3.使用过滤器过滤文件操作
我们先来看看文件的变化
先工具栏注册表的按钮,这样就只显示文件操作了
但是还不够,由于我们基本只关注文件的创建和写操作,我们还要对结果进行过滤
CreateFile/WriteFile
添加两个过滤器 Operation contains CreateFile和Operation contains WriteFile
结果出来之后
程序就只是修改了TeamViewer9_Logfile.log等几个日志文件,说明不是我们想要的

4.使用过滤器过滤注册表操作
接下来我们分析注册表的变化,
首先工具栏的五个过滤图标只保留注册表的
删掉过滤文件系统的条件
接下来我们过滤操作,由于我们不清楚注册表表有哪些操作,我们猜想应该有cteate和write,但是不知道具体名字的时候我们该怎么做呢
点击Operation下的某一条记录比如RegEnumValue,点击鼠标右键,会有一个Exclude 'RegEnumValue'表示不包含RegEnumValue,点击它,我们就建立了一个Operation Exclude 'RegEnumValue' 的过滤器,然后我们再建立其他的过滤条件
最后只保留RegSetValue/RegCreateKey/RegDeleteKey就可以了,貌似这全是VB里面的函数名
做完这些之后我们设置TeamViewer里面的开机启动选项
取消开机自启后RegDeleteKey 了"Always_Online",RegSetValue "Autostart_GUI"=dword:00000000,重新选择开机自启则是相反的过程。
 
5.文本比对
为了方便比较,我们导出注册表进行文本比对
从下面这个路径导出注册表之后用Beyond Compare 3文件比对工具进行文本比对
HKEY_LOCAL_MACHINE\SOFTWARE\TeamViewer\Version9
开机自启的注册表文件为start.reg
取消开机自启选项的是nostart.reg
可以看到 取消开机自启后
"Always_Online"=dword:00000001这个键值对已经没有了
"Autostart_GUI"=dword:00000001这个键值改成了"Autostart_GUI"=dword:00000000

由此我们可以简单的看出来Always_Online这个键值对应开机自启选项


二.回到ubuntu找线索

由于windows是在注册表中定义开机自启的,自然而然的猜想,wine的注册表中会不会有相同的键值对呢?

TeamViewer的deb包在ubuntu系统中有两个配置的地方,分别是/opt/teamviewer9/和~/.config/teamviewer9/,先用ls命令看一下都有什么吧

ls ~/.config/teamviewer9/ 

结果为
config  dosdevices  drive_c  logfiles  system.reg  userdef.reg  user.reg 

ls /opt/teamviewer9/ 

结果为
config  doc  logfiles  tv_bin 

在~/.config/teamviewer9/下有三个reg注册表,拷贝过来打开看看

cp  ~/.config/teamviewer9/*.reg  ~/tmp/ 

结果是里面没有任何关于TeamViewer和Always_Online的键值对

再看看,不是还有两个 config目录没看嘛?

第一个配置文件

cat ~/.config/teamviewer9/config/client.conf 

这里保存的是用户登陆的信息,部分文字如下

TeamViewer User Settings 
# It is not recommended to edit this file manually 

[int32] BuddyLoginFlags = 7 
[strng] BuddyLoginName = "" 

第二个配置文件

cat /opt/teamviewer9/config/global.conf 

这里保存的是全局配置信息,部分文字如下

TeamViewer Global Settings 
# It is not recommended to edit this file manually 
[int32] Always_Online = 1
[bin  ] Certificate =  

第三个配置信息

内容和第一个配置信息一样,路径是/opt/teamviewer9/config/用户名/client.conf

从第二个配置信息开头就可以看到有Always_Online这个字段,修改它的值为0就可以了

sudo vim /opt/teamviewer9/config/global.conf 

修改这个文件的
[int32] Always_Online = 1 

改为
[int32] Always_Online = 0 

另外要注意的是:软件自己设置的禁止开机自启并不是真正的禁止开机,实际上还是有进程存在的,ubuntu下的进程名为teamviewerd,是个守护进程,同样Windows下也实现了类似的机制。

ps axj|grep teamviewerd 

查看结果,标题是我添加的,还有一个grep进程被我删了

PPID   PID  PGID   SID TTY      TPGID STAT   UID   TIME COMMAND 
1  1146  1146  1146 ?           -1 Ssl      0   0:03 /opt/teamviewer9/tv_bin/teamviewerd -f 

teamviewerd进程的TPGID为-1即为守护进程


Teamviewer在Linux下无法启动?:http://www.linuxdiyf.com/linux/12934.html

Teamviewer 5在Fedora 14中使用:http://www.linuxdiyf.com/linux/6064.html

Ubuntu配置远程访问的XRDP协议和Teamviewer软件:http://www.linuxdiyf.com/linux/3748.html

Ubuntu 12.04下安装文件传输远程桌面共享软件Teamviewer:http://www.linuxdiyf.com/linux/2409.html