oDoDo
Сделайте вашу программу скрытым файлом и грейте людям голову
oDoDoзаведите виртуальную машину (или что ни буть на флешке) с поролями, доступами, шифрованием, хитрым загрузчиком итд и скрывайте (странная штука … ну ладно допустим ) все что угодно по взрослому … на здоровье … а так это у вас … извиняюсь … что то из дошкольного возраста
Не думаю, что мои родные смогут это сделать
# -*- coding: utf-8 -*- ########################################################################### ## Python code generated with wxFormBuilder (version Jun 17 2015) ## http://www.wxformbuilder.org/ ## ## PLEASE DO "NOT" EDIT THIS FILE! ########################################################################### import wx import wx.xrc import os import configparser ########################################################################### ## Class MyFrame1 ########################################################################### class MyFrame1 ( wx.Frame ): def __init__( self, parent ): wx.Frame.__init__ ( self, parent, id = wx.ID_ANY, title = wx.EmptyString, pos = wx.DefaultPosition, size = wx.Size( 600,300 ), style = wx.CLOSE_BOX|wx.DEFAULT_FRAME_STYLE| wx.FRAME_TOOL_WINDOW|wx.TAB_TRAVERSAL ) self.config = configparser.ConfigParser() self.config.read('cfg.ini') self.SetSizeHintsSz( wx.DefaultSize, wx.DefaultSize ) bSizer1 = wx.BoxSizer( wx.VERTICAL ) bSizer3 = wx.BoxSizer( wx.VERTICAL ) self.m_staticText1 = wx.StaticText( self, wx.ID_ANY, u"alias", wx.DefaultPosition, wx.DefaultSize, wx.ALIGN_CENTRE ) self.m_staticText1.Wrap( -1 ) bSizer3.Add( self.m_staticText1, 0, wx.EXPAND| wx.ALIGN_CENTER_HORIZONTAL|wx.TOP|wx.RIGHT|wx.LEFT, 5 ) m_choice1Choices = self.config.sections() self.m_choice1 = wx.Choice( self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, m_choice1Choices, 0 ) self.m_choice1.SetSelection( 0 ) bSizer3.Add( self.m_choice1, 0, wx.ALL|wx.EXPAND, 5 ) self.m_staticText2 = wx.StaticText( self, wx.ID_ANY, u"pass", wx.DefaultPosition, wx.DefaultSize, wx.ALIGN_CENTRE ) self.m_staticText2.Wrap( -1 ) bSizer3.Add( self.m_staticText2, 0, wx.EXPAND|wx.TOP| wx.RIGHT|wx.LEFT, 5 ) self.m_textCtrl1 = wx.TextCtrl( self, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, wx.TE_PASSWORD ) bSizer3.Add( self.m_textCtrl1, 0, wx.ALL|wx.EXPAND, 5 ) bSizer1.Add( bSizer3, 1, wx.EXPAND, 5 ) bSizer2 = wx.BoxSizer( wx.HORIZONTAL ) self.m_button1 = wx.Button( self, wx.ID_ANY, u"ok", wx.DefaultPosition, wx.DefaultSize, 0 ) bSizer2.Add( self.m_button1, 0, wx.ALL|wx.EXPAND| wx.ALIGN_CENTER_HORIZONTAL|wx.ALIGN_BOTTOM, 5 ) bSizer1.Add( bSizer2, 0, wx.BOTTOM|wx.RIGHT|wx.LEFT| wx.ALIGN_CENTER_HORIZONTAL, 5 ) self.SetSizer( bSizer1 ) self.Layout() self.Centre( wx.BOTH ) # Connect Events self.m_button1.Bind( wx.EVT_BUTTON, self.clk_ok ) def __del__( self ): pass # Virtual event handlers, overide them in your derived class def clk_ok( self, event ): try: aha = self.m_choice1.GetString(self.m_choice1.GetSelection()) if self.config[aha]['pass'] == self.m_textCtrl1.GetLineText(0): os.system(self.config[aha]['file'] ) self.Close() else: qwerty = wx.MessageDialog( self, bytes.decode('\xd1\x81 \xd0\xb2\xd0\xb0\xd1\x81 ' + '\xd0\xb2 \xd0\xbb\xd1\x8e\xd0\xb1\xd1\x83\xd1\x8e ' + '\xd0\xbe\xd1\x80\xd0\xb3\xd0\xb0\xd0\xbd\xd0\xb8\xd0' + '\xb7\xd0\xb0\xd1\x86\xd0\xb8\xd1\x8e \xd0\xb1\xd0\xbb' + '\xd0\xb0\xd0\xb3\xd0\xbe\xd1\x82\xd0\xb2\xd0\xbe\xd1\x80' + '\xd0\xb8\xd1\x82\xd0\xb5\xd0\xbb\xd1\x8c\xd0\xbd\xd1\x83' + '\xd1\x8e 20 \xd0\xb1\xd0\xb0\xd0\xba\xd1\x81\xd0\xbe\xd0' + '\xb2 \xd0\xbf\xd0\xb5\xd1\x80\xd0\xb5\xd1\x87\xd0\xb8\xd1' + '\x81\xd0\xbb\xd0\xb8\xd1\x82\xd1\x8c', 'utf-8'), caption=bytes.decode( '\xd0\xb5\xd1\x81\xd1\x87\xd1\x89\xd0\xbe', 'utf-8'), style=wx.OK|wx.CENTRE, pos=wx.DefaultPosition) qwerty.ShowModal() qwerty.Destroy() self.Close() except: self.Close() if __name__ == "__main__": app = wx.PySimpleApp(0) wx.InitAllImageHandlers() Generate_name = MyFrame1(None) app.SetTopWindow(Generate_name) Generate_name.Show() app.MainLoop()
[notepad] file = "notepad.exe" pass = 12345 [еще_че_то_такое] file = "c:/алиас/еще.exe" pass = 12345