Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/8: Рейтинг темы: голосов - 8, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 27.08.2013
Сообщений: 21

Скрытие (шифрование) данных программы

23.06.2014, 19:21. Показов 1777. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день. Имеется программа, которая отображает картинки, тексты, воспроизводит музыку (музыку через АPI). Всё это лежит в коренной папке программы. Если скомпилировать exe файл из проекта vb, то все файлы видны пользователям, которые могут редактировать их. Так вот такой вопрос: можно ли их, эти файлы картинок, текста, музыки, как-нибудь зашифровать от редактирования, может в какой-нибудь формат переделать, но что бы exe мог спокойно работать с ними?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
23.06.2014, 19:21
Ответы с готовыми решениями:

Скрытие программы в диспетчере задач
Как сделать чтобы программа на VB6 не отображалась в диспетчере задач

Скрытие окна запускаемой сторонней программы
Я решил вынести оставшийся вопрос отдельно. До этого уже обсуждали остальные мои вопросы. Не все захочется всё читать и вникать 0 дан ли...

Скрытие программы по Ctrl+Alt+Del в XP.
Под 9x использовал RegistryServiceProcessId. Работало нормально. А в XP ее просто нет. Что делать? Программу закончить не можем из-за...

15
Модератор
10048 / 3894 / 883
Регистрация: 22.02.2013
Сообщений: 5,847
Записей в блоге: 79
23.06.2014, 19:43
Лучший ответ Сообщение было отмечено pelfs как решение

Решение

Можешь засунуть все в ресурсы, если они только для чтения - это исключит возможность редактирования простому пользователю.
Также можешь написать свой загрузчик, который будет расшифровывать предварительно зашифрованные ресурсы с проверкой контрольной суммы. Если устраивает применение одного внешнего файла-хранилища, то тут вариантов очень много, от банального PropertyBag и Stream (ADODB) до реализации IStorage и IStream.
1
0 / 0 / 0
Регистрация: 27.08.2013
Сообщений: 21
23.06.2014, 20:38  [ТС]
Можешь засунуть все в ресурсы
Разобрался с ресурсами, самое то, спасибо!
Музыка в проекте Visual Basic 6.0

Добавлено через 20 минут
А нельзя к одному проекту прикреплять по очереди определенный файл ресурса (*.res)?
0
Модератор
10048 / 3894 / 883
Регистрация: 22.02.2013
Сообщений: 5,847
Записей в блоге: 79
23.06.2014, 20:39
pelfs, можешь добавить несколько ресурсов в один res файл
0
0 / 0 / 0
Регистрация: 27.08.2013
Сообщений: 21
23.06.2014, 20:44  [ТС]
pelfs, можешь добавить несколько ресурсов в один res файл
а что бы несколько файлов res было и открывать нужный?
0
Модератор
10048 / 3894 / 883
Регистрация: 22.02.2013
Сообщений: 5,847
Записей в блоге: 79
23.06.2014, 20:48
Цитата Сообщение от pelfs Посмотреть сообщение
а что бы несколько файлов res было и открывать нужный?
Можешь, но это на этапе проектирования. Можешь редактировать ресурсы в EXE когда он не открыт через BeginUpdateResource, UpdateResource, EndUpdateResource.
0
0 / 0 / 0
Регистрация: 27.08.2013
Сообщений: 21
23.06.2014, 20:50  [ТС]
Можешь, но это на этапе проектирования. Можешь редактировать ресурсы в EXE когда он не открыт через BeginUpdateResource, UpdateResource, EndUpdateResource.
т.е. программно нельзя.
0
0 / 0 / 0
Регистрация: 27.08.2013
Сообщений: 21
24.06.2014, 23:24  [ТС]
Цитата Сообщение от The trick Посмотреть сообщение
Можешь засунуть все в ресурсы
При компиляции создается только 1 файл exe, в который запихивается весь ресурс (т.е. он будет весить много). При запуске exe весь файл записывается в оперативку?
0
 Аватар для Антихакер32
1201 / 473 / 46
Регистрация: 06.01.2014
Сообщений: 1,797
Записей в блоге: 19
25.06.2014, 09:47
Zip для этого очень подойдет

Кликните здесь для просмотра всего текста
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
Const TH32CS_SNAPTHREAD = &H4
Const SYNCHRONIZE = &H100000
Const lenNow = 21
Const WM_KEYDOWN = &H100
Const GW_CHILD = 5, GW_HWNDNEXT = 2, cc = 100
'
Private Type THREADENTRY32
    dwSize As Long
    cntUsage As Long
    th32ThreadID As Long
    th32OwnerProcessID As Long
    tpBasePri As Long
    tpDeltaPri As Long
    dwFlags As Long
End Type
Private Type tActCTL
    ForegroundWindow As Long
    ClassName As String
    Child As Long
    ChildClassName As String
    ChildText As String
End Type
'
Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Private Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long
Private Declare Function OpenThread Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwThreadId As Long) As Long
Private Declare Function Thread32First Lib "kernel32" (ByVal hSnapshot As Long, ByRef lpte As THREADENTRY32) As Long
Private Declare Function Thread32Next Lib "kernel32" (ByVal hSnapshot As Long, ByRef lpte As THREADENTRY32) As Long
Private Declare Function CreateToolhelp32Snapshot Lib "kernel32" (ByVal dwFlags As Long, ByVal th32ProcessID As Long) As Long
Private Declare Function GetCurrentProcessId Lib "kernel32" () As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Private Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Private Declare Function GetClassName Lib "user32" Alias "GetClassNameA" (ByVal hwnd As Long, ByVal lpClassName As String, ByVal nMaxCount As Long) As Long
Private Declare Function GetForegroundWindow Lib "user32" () As Long
Private Declare Function GetWindow Lib "user32" (ByVal hwnd As Long, ByVal wCmd As Long) As Long
Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
'
Dim FSO As FileSystemObject ' Object
Dim ShellApp As Shell, LogStream As TextStream, dicParsers As Dictionary
'
Dim FileVB6_EXE$, m_OutDir$, m_ZipName$, m_InitDir$, m_OldDir$, m_DelImport As Boolean
Dim LogPath As String, mParsers()
 
 
Property Let DelImport(ByVal vNewValue As Boolean)
    m_DelImport = vNewValue
    LogWriteLine "DelImport", m_DelImport
End Property
 
Private Sub LogWriteLine(ByVal ProcName$, Optional ByVal Text$)
    Dim s As String * lenNow
    LSet s = Now: LogStream.WriteLine s & "[" & ProcName & "]" & Text$
End Sub
 
Private Function ErrorFO(ByVal ProcName$)
    'Откат созданных файлов и папок
    '
    Dim s$, j$(), f&, vEach
    j = Split(FSO.OpenTextFile(LogPath).ReadAll, vbCrLf)
    LogWriteLine "ErrorFO", ProcName
    On Error Resume Next
    For f = UBound(j) To 0 Step -1
        For Each vEach In Array("CreateFolder", "CreateFile", ProcName)
            If InStr(1, j(f), "[" & vEach & "]") = lenNow + 1 Then
                s = Trim(Mid$(j(f), Len(vEach) + lenNow + 3))
                Select Case vEach
                Case "CreateFolder": FSO.DeleteFolder s: LogWriteLine "DeleteFolder", s
                Case "CreateFile": FSO.DeleteFile s: LogWriteLine "DeleteFile", s
                Case ProcName: Exit Function
                End Select
            End If
    Next: Next
End Function
 
Private Function CreateFile(ByVal AbsPath$, Optional Text) As Boolean
    'Проверяет путь и при не обходимости создаёт недостающие папки и файл
    '
    CreateFile = FSO.FileExists(AbsPath)
    If CreateFile Then Exit Function
    '---------------
    If CreateFolder(FSO.GetParentFolderName(AbsPath)) Then
        On Error Resume Next
        FSO.CreateTextFile(AbsPath).Write Text
        If Err = 0 Then LogWriteLine "CreateFile", AbsPath
    End If
    CreateFile = FSO.FileExists(AbsPath)
End Function
 
Private Function apn$(Path$)
    apn = FSO.GetAbsolutePathName(Path)
End Function
 
Private Function CreateFolder(ByVal AbsPath$) As Boolean
    'Проверяет путь и при не обходимости создаёт недостающие папки
    '
    Dim f&, j$(), s$, LS$
    CreateFolder = FSO.FolderExists(AbsPath)
    If CreateFolder Then Exit Function
    '---------------
    j = Split(AbsPath, k)
    On Error Resume Next
    For f = 0 To UBound(j)
        s = s & j(f) & k
        If Not FSO.FolderExists(s) And f = 0 Then
            Exit Function 'Драйвер указан не верно
        ElseIf Not FSO.FolderExists(s) Then Call FSO.CreateFolder(s)
            If FSO.FolderExists(s) Then LogWriteLine "CreateFolder", apn(s)
        End If
    Next
    CreateFolder = FSO.FolderExists(AbsPath)
End Function
 
Public Property Let InitDir(ByVal vNewValue As String)
    If FSO.FolderExists(vNewValue) Then
        m_InitDir = FSO.GetAbsolutePathName(vNewValue)
        ChDir m_InitDir: LogWriteLine "InitDir", m_InitDir
    End If
End Property
 
Public Property Let ZipName(ByVal vNewValue As String)
    If LCase(FSO.GetExtensionName(vNewValue)) = "zip" Then
        m_ZipName = FSO.GetAbsolutePathName(vNewValue)
        LogWriteLine "ZipName", m_ZipName
    End If
End Property
 
Public Property Let OutDir(ByVal vNewValue As String)
    m_OutDir = FSO.GetAbsolutePathName(vNewValue)
    LogWriteLine "OutDir", m_OutDir
End Property
 
Private Function GetThreadsList() As Long()
    'Возвращает список потоков
    '
    Dim hSnap&, TE As THREADENTRY32, PID&, Lst&(), u&, i&
    hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD, 0)
    If hSnap = -1 Then Exit Function
    u = 10: i = -1: ReDim Preserve Lst(u)
    TE.dwSize = Len(TE)
    PID = GetCurrentProcessId()
    If Thread32First(hSnap, TE) Then
        Do
            If TE.th32OwnerProcessID = PID Then
                i = i + 1: Lst(i) = TE.th32ThreadID
                If i > u Then u = i * 2: ReDim Preserve Lst(u)
            End If
        Loop While Thread32Next(hSnap, TE)
        ReDim Preserve Lst(i)
    End If
    CloseHandle hSnap
    GetThreadsList = Lst
End Function
 
Public Function UnZip(Parsers()) As Long
    'Извлекает папки/файлы из архива с полной структурой *!
    'совподающие пути заменяются без диалогов
    '
    Dim Zip As Folder3, f&, vEach, oldThreads&(), newThreads&(), hTrd&, DestDir As Object
    Dim j$(), ParserObj As Object, bp$
    LogWriteLine "UnZip"
    On Error Resume Next
    If Not FSO.FileExists(m_ZipName) Then ErrorFO "UnZip": Exit Function
    If Not CreateFolder(m_OutDir) Then ErrorFO "UnZip": Exit Function
    Set Zip = ShellApp.NameSpace(ByVal FSO.GetAbsolutePathName(m_ZipName))
    For Each vEach In Parsers
        j = Split(vEach, k): TrimArrStr (j)
        bp = m_OutDir
        Set ParserObj = Zip
        Set DestDir = ShellApp.NameSpace(ByVal bp)
        For f = 0 To UBound(j)
            Set ParserObj = ParserObj.ParseName(j(f))
            bp = FSO.BuildPath(bp, j(f))
            If ParserObj.IsFolder Then
                If Not CreateFolder(bp) Then GoTo NextEach
                Set ParserObj = ParserObj.GetFolder
                Set DestDir = ShellApp.NameSpace(ByVal bp)
            End If
        Next
        Debug.Print bp
        If FSO.FileExists(bp) Then FSO.DeleteFile (bp)
        If Len(ParserObj.Name) = 0 Then GoTo NextEach
        oldThreads = GetThreadsList
        DestDir.CopyHere ParserObj
        newThreads = GetThreadsList
        If UBound(newThreads) > UBound(oldThreads) Then
            hTrd = OpenThread(SYNCHRONIZE, False, newThreads(UBound(newThreads)))
            Call WaitForSingleObject(hTrd, -1): 'Ждать завершения операции распаковки
        End If
        CloseHandle hTrd
        LogWriteLine "UnZip", vEach: UnZip = UnZip + 1
NextEach:
    Next
    If UnZip = 0 Then ErrorFO "UnZip": Exit Function
End Function
 
Public Function ToZip(Paths()) As Long
    'Создает/добавляет файлы в архив
    '
    Const LenRandName = 10
    Dim Zip As Folder3, f&, oldThreads&(), newThreads&(), hTrd&
    LogWriteLine "ToZip"
    On Error Resume Next
    If Len(m_ZipName) = 0 Then
        Randomize Timer: m_ZipName = Space$(LenRandName)
        For f = 1 To LenRandName: Mid$(m_ZipName, f, 1) = Chr$(97 + Fix(Rnd * 26))
        Next: m_ZipName = m_OutDir & k & m_ZipName & ".zip": GoTo NewZip
    Else
NewZip:
        If Not CreateFile(m_ZipName, "PK" & Chr(5) & Chr(6) & String(18, 0)) Then
            ErrorFO "ToZip": Exit Function
        End If
    End If
    Set Zip = ShellApp.NameSpace(FSO.GetAbsolutePathName(m_ZipName))
    For f = 0 To UBound(Paths)
        Paths(f) = FSO.GetAbsolutePathName(Paths(f))
        If FSO.FileExists(Paths(f)) Or FSO.FolderExists(Paths(f)) Then Else GoTo Next_F
        If GetAttr(Paths(f)) And vbDirectory Then _
        If ShellApp.NameSpace((Paths(f))).Items.Count = 0 Then GoTo Next_F 'Пропускать пустые папки
        'Сравнение старых и новых потоков
        oldThreads = GetThreadsList: Zip.CopyHere ByVal Paths(f): newThreads = GetThreadsList
        If UBound(newThreads) > UBound(oldThreads) Then
            hTrd = OpenThread(SYNCHRONIZE, False, newThreads(UBound(newThreads)))
            Do While WaitForSingleObject(hTrd, 100)  'Ждать завершения операции сжатия
                With ForeGrWinInfo(1)
                    If (.ClassName & .ChildClassName) = "#32770Button" And Len(.ChildText) Then
                        Debug.Print .ChildText, .ClassName, .ChildClassName
                        PostMessage .Child, WM_KEYDOWN, 13, 1
                        Call WaitForSingleObject(hTrd, -1): Exit Do
            End If: End With: Loop
            CloseHandle hTrd
        End If
        LogWriteLine "ToZip", Paths(f): ToZip = ToZip + 1
Next_F:
    Next
    If ToZip = 0 Then ErrorFO "ToZip": Exit Function
End Function
Private Function RelativePath(ByVal Path$) As String
    RelativePath = Replace(Path, m_InitDir & k, "")
End Function
 
Private Function ForeGrWinInfo(Optional ChildID&) As tActCTL
    Dim f&
    With ForeGrWinInfo
        .ForegroundWindow = GetForegroundWindow
        .Child = GetWindow(.ForegroundWindow, GW_CHILD)
        For f = 1 To ChildID: .Child = GetWindow(.Child, GW_HWNDNEXT): Next
        .ClassName = Space$(cc): GetClassName .ForegroundWindow, .ClassName, cc
        .ClassName = Trim$(Left$(.ClassName, InStr(1, .ClassName, vbNullChar) - 1))
        .ChildText = Space$(cc): GetWindowText .Child, .ChildText, cc
        .ChildText = Trim$(Left$(.ChildText, InStr(1, .ChildText, vbNullChar) - 1))
        .ChildClassName = Space$(cc): GetClassName .Child, .ChildClassName, cc
        .ChildClassName = Trim$(Left$(.ChildClassName, InStr(1, .ChildClassName, vbNullChar) - 1))
    End With
End Function
 
 
Public Function Make(Files()) As Long
    'Автокомпиляция проекта
    'Files = Список компилируемых файлов
    Dim FileName$, mDir$, ShellNum&, hProc&, f&
    LogWriteLine "Make"
    If Not CreateFolder(m_OutDir) Then ErrorFO "Make": Exit Function
    mDir = """" & m_OutDir & """"
    For f = 0 To UBound(Files)
        Files(f) = FSO.GetAbsolutePathName(Files(f))
        If Not FSO.FileExists(Files(f)) Then GoTo Next_F
        Select Case LCase(FSO.GetExtensionName(Files(f)))
        Case "vbp", "vbg": Case Else: GoTo Next_F
        End Select: FileName = """" & Files(f) & """"
        ShellNum = Shell(FileVB6_EXE & " /Make " & FileName & " /OutDir " & mDir)
        hProc = OpenProcess(SYNCHRONIZE, False, ShellNum)
        Call WaitForSingleObject(hProc, -1)
        CloseHandle hProc
        Make = Make + 1
Next_F:
    Next
End Function
 
Private Sub Class_Initialize()
    Set FSO = CreateObject("Scripting.FileSystemObject"): LogPath = App.Path & "\LogStream.txt"
    Set LogStream = FSO.CreateTextFile(LogPath)
    LogWriteLine "Initialize" 'Начало ведение лога
    Set ShellApp = CreateObject("Shell.Application")
    FileVB6_EXE = """" & Environ("ProgramFiles") & "\Microsoft Visual Studio\VB98\VB6.EXE" & """"
    m_OldDir = CurDir$: m_OutDir = m_OldDir: m_InitDir = m_OldDir
End Sub
 
Private Sub Class_Terminate()
    ChDir m_OldDir
    LogStream.Close 'Закрытие потока записи лога
End Sub


Добавлено через 8 минут
но я это использую в виде отдельной проги вызываемой посредственно
через команды ..

Кликните здесь для просмотра всего текста
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
Attribute VB_Name = "modSInst"
Option Explicit
Global Const r = "/", z = ",", k = "\", NameFilter = "[!0-9!a-z!A-Z!а-я!А-Я!Ё!ё!_]"
Dim clsSInst As New clsSInst
 
Sub CallArg(ByVal ArgLine As String)
    Dim f&, j$(1), Arg(), Result As Variant
    On Error Resume Next
    For f = 1 To Len(ArgLine):  If Mid$(ArgLine, f, 1) Like NameFilter Then Exit For
        j(0) = j(0) & Mid$(ArgLine, f, 1)
    Next: j(1) = Trim(Mid$(ArgLine, f))
    If Asc(j(1)) = Asc("=") Then
        Result = CallByName(clsSInst, j(0), VbLet, Trim$(Mid$(j(1), 2)))
    Else
        Arg = TrimArrVar(Split(j(1), z))
        Result = CallByName(clsSInst, j(0), VbMethod, Arg)
        If Err.Number = 450 Then
            Result = CallByName(clsSInst, j(0), VbLet, Arg(0))
            Exit Sub
        End If
    End If
End Sub
 
Sub Main()
    Dim Arg() As Variant, j$(), f&, u&
    
    Dim Command$ 'Тэстовая часть
    Command$ = "/InitDir=C:\Documents and Settings\All Users\Документы\Моя музыка\Mp3" & _
    "/ZipName=C:\Documents and Settings\User32\Рабочий стол\Новая папка (5)\Новая--папка\Сжатая ZIP-папка.zip" & _
    "/OutDir=C:\Documents and Settings\User32\Рабочий стол\Новая папка (99)" & _
    "/ToZip " & _
    "2 Eivissa - Uh La La La (DJ Nejtrino & DJ Baur Summer Ready Mix).mp3," & _
    "Настройки [2г].zip," & _
    "Новая папка\2014-06-08_065236.jpg," & _
    "03 - Мировые инструментальные хиты  (audiopoisk.com).mp3"
    
    '
    '----------------------------------
    On Error Resume Next: DeleteSetting App.Path
    On Error GoTo 0
    j = TrimArrStr(Split(Command$, r))
    For f = 0 To UBound(j):  If Len(j(f)) Then CallArg j(f)
    Next
 
End Sub
 
Function TrimArrVar(Arr) As Variant()
    'Удаляет передние и задние пробелы в массиве
    '
    Dim f&: ReDim v(UBound(Arr)): For f = 0 To UBound(Arr): v(f) = Trim(Arr(f)): Next: TrimArrVar = v
    TrimArrVar = v
End Function
 
Function TrimArrStr(Arr) As String()
    'Удаляет передние и задние пробелы в списке
    '
    Dim f&, j$(): j = Arr: For f = 0 To UBound(Arr): j(f) = Trim(Arr(f)): Next: TrimArrStr = j
End Function


Добавлено через 9 часов 56 минут
Необходимо соблюдать осторожность при обращении к объекту zip и Shell
так-как можно нарушить ее работу от необдуманных действий
и восстановление системы не поможет.. ну тоесть ось будет работать но
обычные повседневные операции начнут глючить..

в этом случае я могу только посоветовать загодя обзавестись
копией папки Windows или System32, а заменить ее из альтернотивной оси..
например из BartPE запускаемой с флэхи

Кликните здесь для просмотра всего текста
0
25.06.2014, 10:15

Не по теме:

Цитата Сообщение от Антихакер32 Посмотреть сообщение
Необходимо соблюдать осторожность при обращении к объекту zip и Shell
так-как можно нарушить ее работу от необдуманных действий
и восстановление системы не поможет.. ну тоесть ось будет работать но
обычные повседневные операции начнут глючить..
в этом случае я могу только посоветовать загодя обзавестись
копией папки Windows или System32, а заменить ее из альтернотивной оси..
например из BartPE запускаемой с флэхи
Что-то ТС молчит. Наверное уже запустил твой суперкод :rofl: и обзаводится новой осью :D

0
 Аватар для Антихакер32
1201 / 473 / 46
Регистрация: 06.01.2014
Сообщений: 1,797
Записей в блоге: 19
25.06.2014, 11:48
да все работает, только я и говорю.. нужно все делать
продуманно чтоб обращение к zip-объекту было безошибочным
особенно если копируется множество файлов

Добавлено через 8 минут
недопустимы остановки кода в этот момент
1
0 / 0 / 0
Регистрация: 27.08.2013
Сообщений: 21
26.06.2014, 00:44  [ТС]
Цитата Сообщение от SoftIce Посмотреть сообщение
Что-то ТС молчит. Наверное уже запустил твой суперкод и обзаводится новой осью
не, спасибо. Для создания простенькой проги я не хочу так рисковать. Посмотрел другие проги (точнее игры), то там екзешник по гигу и больше. Думаю мои сотни метров не повлияют на работоспособность программы.
0
 Аватар для Антихакер32
1201 / 473 / 46
Регистрация: 06.01.2014
Сообщений: 1,797
Записей в блоге: 19
26.06.2014, 13:46

Не по теме:

Цитата Сообщение от SoftIce
Что-то ТС молчит. Наверное уже запустил твой суперкод и обзаводится новой осью
Цитата Сообщение от pelfs
не, спасибо.
Да я 100 раз так уже делал..
Главное чтоб папка документов не слетела, а то пришлось-бы еще и пароли вспоминать :)



Добавлено через 5 минут
простенький EXE-шник не может быть больше 10 метров
если используется еще больше пространства, то это обычно связанно
с зашитыми файлами, картинками, свистелками и тп, обычно быстроработающие проги
не жмут используемые файлы
0
27.06.2014, 21:08

Не по теме:


Цитата Сообщение от SoftIce Посмотреть сообщение
Что-то ТС молчит. Наверное уже запустил твой суперкод и обзаводится новой осью
:D:D:D
Цитата Сообщение от Антихакер32 Посмотреть сообщение
Да я 100 раз так уже делал..
уже 100 раз переставлял ОСь ?

0
28.06.2014, 00:00

Не по теме:

ну не 100 конечно, но уже и не считаю сколько
зато намного быстрее чем полностью переустанавливать всю винду
просто скопировал себе важнейшие настройки на флеху емкостью 4г
там-же в ней зашит MBR и мультизагрузка, включая WinPE и BartPE
и убрал в сторонку, а когда приспичит всегда можно ее достать и
восстановить то что невозможно востановить из основной OCи
копию основных настроек я сделал вместе с со всеми обновленными дровами

0
Модератор
10048 / 3894 / 883
Регистрация: 22.02.2013
Сообщений: 5,847
Записей в блоге: 79
28.06.2014, 01:08
Если тебе нужна файловая система внутри файла, то самый правильный вариант создавать/открывать такой файл через StgCreateStorageEx/StgOpenStorageEx, и уже работать на уровне файлов (IStream) и папок (IStorage). Можно создавать неограниченное число элементов (файлов, папок), переименовывать, удалять, перемещать, копировать, открывать, получать дату (создания, изменения, доступа), задавать атрибуты. И все это в одном файле.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.06.2014, 01:08
Помогаю со студенческими работами здесь

Скрытие программы
На моем сканере есть горячие клавиши, они работают исправно. Но когда на них нажимаешь появляется форма с отображением прогресса. Как эту...

Скрытие окна программы
Добрый день форумчане! Мучает один вопрос: как скрыть окно консольного приложения? Есть некая программа, она работает и окно не...

Автозагрузка и скрытие программы
Здравствуйте))) Мне надо добавить консольное приложение (написанное в Delphi7) в автозагрузку и скрыть вкладку уже работающего приложения ...

Скрытие программы из процессов. Borland C++
Добрый вечер! Я знаю что эта тема всем не понравится. Она обсуждалась много раз, но я не смог найти не чего рабочего. Прошу понять и по...

Скрытие другой программы из таскбара
Добрый день. Возникла небольшая задачка которую я не могу решить ) Вообщем моя программа запускает файл Process run = new...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru