blog-blog-blog

Утилитка на PyQt. Изменение атрибутов файлов.

, , ,

Есть такой злобный вирус, который устанавливает директориям атрибуты скрытый и системный. Графическими средствами Windows эти атрибуты не снять, для чего набросал эту утилитку. Она использует файл графического интерфейса form.py из прошлого поста.
# -*- coding: utf-8 -*-
import sys, os, time, win32api, win32con
from PyQt4 import QtGui, QtCore
from form import Ui_Form

class pyqt01(QtGui.QMainWindow):
  def __init__(self):
    QtGui.QMainWindow.__init__(self)
    self.ui = Ui_Form()
    myWidget = QtGui.QWidget()
    self.ui.setupUi(myWidget)
    self.setCentralWidget(myWidget)
    self.connect(self.ui.listWidget, QtCore.SIGNAL('itemSelectionChanged()'), self.ptext)
    self.connect(self.ui.pushButton, QtCore.SIGNAL('clicked()'), self.showDialog)
    self.connect(self.ui.listWidget, QtCore.SIGNAL('itemDoubleClicked(QListWidgetItem *)'), self.setAttr)
    font = QtGui.QFont()
    font.setBold(True)
	
	
  def setAttr(self):
    win32api.SetFileAttributes(unicode(self.ui.listWidget.item(self.ui.listWidget.currentRow()).text()), win32con.FILE_ATTRIBUTE_NORMAL)
    self.ui.listWidget.item(self.ui.listWidget.currentRow()).setFont(QtGui.QFont(self.font().family(), self.font().pixelSize(), QtGui.QFont.Normal))
    self.ptext()

  def showDialog(self):
    filename = QtGui.QFileDialog.getExistingDirectory(self, 'Open file')
    self.ui.listWidget.clear()
    names = os.listdir(unicode(filename))
    for dirs in names:
      fullname = os.path.join(unicode(filename), dirs)
      if os.path.isdir(fullname):
        self.ui.listWidget.addItem(fullname)
        attrs = win32api.GetFileAttributes(fullname)
        if attrs & win32con.FILE_ATTRIBUTE_SYSTEM:
          self.ui.listWidget.item(self.ui.listWidget.count()-1).setFont(QtGui.QFont(self.font().family(), self.font().pixelSize(), QtGui.QFont.Bold))
        if attrs & win32con.FILE_ATTRIBUTE_HIDDEN:
          self.ui.listWidget.item(self.ui.listWidget.count()-1).setFont(QtGui.QFont(self.font().family(), self.font().pixelSize(), QtGui.QFont.Bold))
		  
  def ptext(self):
    attrs = win32api.GetFileAttributes(unicode(self.ui.listWidget.item(self.ui.listWidget.currentRow()).text()))
    self.ui.textEdit.setText(unicode(self.ui.listWidget.item(self.ui.listWidget.currentRow()).text()))
    if attrs & win32con.FILE_ATTRIBUTE_READONLY: # 1
      self.ui.textEdit.append("FILE_ATTRIBUTE_READONLY")
    if attrs & win32con.FILE_ATTRIBUTE_HIDDEN: # 2
      self.ui.textEdit.append("FILE_ATTRIBUTE_HIDDEN")
    if attrs & win32con.FILE_ATTRIBUTE_SYSTEM: # 4
      self.ui.textEdit.append("FILE_ATTRIBUTE_SYSTEM")      
    if attrs & win32con.FILE_ATTRIBUTE_DIRECTORY: # 16
      self.ui.textEdit.append("FILE_ATTRIBUTE_DIRECTORY")
    if attrs & win32con.FILE_ATTRIBUTE_ARCHIVE: # 32
      self.ui.textEdit.append("FILE_ATTRIBUTE_ARCHIVE")
    if attrs & win32con.FILE_ATTRIBUTE_NORMAL: # 128
      self.ui.textEdit.append("FILE_ATTRIBUTE_NORMAL")
    if attrs & win32con.FILE_ATTRIBUTE_TEMPORARY: # 256
      self.ui.textEdit.append("FILE_ATTRIBUTE_TEMPORARY")
    if attrs & win32con.FILE_ATTRIBUTE_COMPRESSED: # 2048
      self.ui.textEdit.append("FILE_ATTRIBUTE_COMPRESSED")


if __name__ == "__main__":
    app = QtGui.QApplication(sys.argv)
    window = pyqt01()
    window.show()
    sys.exit(app.exec_())

Утилитка на PyQt. Выборка из XML, созданных в EverestСвязываем Qt Creator и code.google.com

Write a comment

New comments have been disabled for this post.