Утилитка на PyQt. Изменение атрибутов файлов.
Tuesday, May 31, 2011 9:46:19 AM
Есть такой злобный вирус, который устанавливает директориям атрибуты скрытый и системный. Графическими средствами 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_())
