在Python中重新启动机器后,图标覆盖仍然存在

时间:2016-01-05 15:18:25

标签: python windows com overlay

所以,感谢Tim Golden guide和其他questions,我有一个脚本,根据类似于Tortoise SVN或Dropbox的“状态”显示文件和文件夹的叠加。

我的问题是,一旦我重新启动explorer.exe进程或操作系统本身并打开资源管理器,就不再有任何覆盖。

我的第一个念头:

  • 让实际管理文件状态的服务检测到没有请求进入并重新注册覆盖处理程序

这里的问题是注册需要提升权限,这在最终用户初次安装应用程序时是可以接受的,但不是每次重启机器时都是如此。

有人可以建议我在这里失踪吗? 我将类BaseOverlay及其子类放在一个.py文件中,并通过使用子进程调用此脚本从我的主应用程序注册。

subprocess.check_call(script_path, shell=True)

Explorer是否无法重新加载脚本,因为它是Python?我需要编译成DLL或EXE吗?这会改变注册过程吗?

这是注册电话:

win32com.server.register.UseCommandLine(BaseOverlay)

这是课程(简化):

class BaseOverlay:
    _reg_clsid_ = '{8D4B1C5D-F8AC-4FDA-961F-A0143CD97C41}'
    _reg_progid_ = 'someoverlays'
    _reg_desc_ = 'Icon Overlay Handler'
    _public_methods_ = ['GetOverlayInfo', 'GetPriority', 'IsMemberOf']
    _com_interfaces_ = [shell.IID_IShellIconOverlayIdentifier]

    def GetOverlayInfo(self):
        return icon_path, 0, shellcon.ISIOI_ICONFILE

    def GetPriority(self):
        return 50

    def IsMemberOf(self, fname, attributes):
        return winerror.S_OK

0 个答案:

没有答案