|
ПереЗаписать в файл (большой 100 Гигов) заголовок (выбор среды разраб. и библ.) | ☑ | ||
---|---|---|---|---|
0
Вуглускр1991
08.06.15
✎
12:53
|
Привет!
Появилась задача: в большом файле сделать изменения, в заголовок зафигачить новые данные. Понимаю, что могу это написать на С++, на классическом C, на Паскале, на АСМе, и даже выпендриться и написать на 1С. Однако, в данной задаче требуется знание тех объектов и библиотек, которые будут использованы. Нужно максимально надежно, максимально близко к объектам ОС (Windows 7 64бит). Что посоветуете выбрать? |
|||
5
MMF
08.06.15
✎
14:58
|
А потом появится тема "шифровальщик затер заголовки файлов mdf больших баз" :-)
|
|||
6
Вуглускр1991
08.06.15
✎
15:01
|
(5) Ты практически прав, но все в обратной последовательности: сперва появился шифровальщик, потом люди сделали заказ.
А почему mdf? |
|||
7
MMF
08.06.15
✎
15:05
|
(6) да вот как-то сходу файлов больше 100 Гб других и не придумать... А люди знают, что исполнитель - не разбирается в вопросе?
|
|||
8
Вуглускр1991
08.06.15
✎
15:15
|
(7) Я ищу исполнителей, которые разбираются в вопросе.
|
|||
9
Вуглускр1991
08.06.15
✎
15:15
|
(8+) но если не найду, то сделаю сам, проконсультировавшись ...
|
|||
10
D_E_S_131
08.06.15
✎
15:20
|
Как "заказчикам"-то не поперло — с начала шифровальщик данные запоганил, а потом расшифровщик окончательно данные убьет.
|
|||
11
Вуглускр1991
08.06.15
✎
15:26
|
(10) Я не занимаюсь расшифровкой.
|
|||
12
Кирпич
08.06.15
✎
15:45
|
(2) какая разница какого размера файл? Или ты мыслишь как одинесник: загрузить весь файл в память, а потом записать? :))
|
|||
13
Кирпич
08.06.15
✎
15:46
|
просто записать в файл - это пять строчек код. и пофигу сколько там у тебя гигов или килобайт.
|
|||
14
ILM
гуру
08.06.15
✎
15:50
|
hexeditor уже предлагали?
|
|||
15
Вуглускр1991
08.06.15
✎
15:54
|
(12) Когда я написал свой DCOM сервер, тоже были мысли типа таких, а оказалось что права надо давать, порты надо открывать, службы надо запускать, в среде wind2003 все работает как надо, в среде win2008 все работает с пинками, а в среде windows 8.1 все не работает бог знает почему.
Здесь тоже, надо иметь опыт и быть специалистом. Как поведет себя UAC? Защитник Windows? А нет ли ещё какой-нибудь службы инспекции? Нет ли чего-нибудь, что помешает? А по нехватки памяти - тоже может быть, смотря каким уровнем абстракции пользоваться. Я если б знал, чего там бывает, я бы не спрашивал. Это программа типа "hello world", но от реализации очень много зависит. (14) В winhexe руками я сделал все, что нужно и все получилось, теперь мне нужна автоматизация для кучи файлов. |
|||
16
MMF
08.06.15
✎
15:57
|
(15) да тебе всего то нужно CreateFile + SetFilePointer + WriteFile ... ну или обертки на любом языке вокруг api
|
|||
17
Кирпич
08.06.15
✎
15:59
|
(15) у как всё сложно то. не боись. windows тебе напишет, если нету доступа. больше камне йнету. пиши свои 10 строчек и не парься.
|
|||
18
trdm
08.06.15
✎
15:59
|
(4) она для текстовых.
|
|||
19
DmitrO
08.06.15
✎
16:01
|
(16)угу, причем при реализации на любых языках/библиотеках, в конечном счете и будут вызываться именно эти функции из Kernel32.dll :)
|
|||
20
Вуглускр1991
08.06.15
✎
16:02
|
(16) Спасибо, рою в этом направлении ...
(17) Пусть напишет, но только сейчас, чтобы я это увидел, а не через полгода, когда я уже забуду обо вс ем, что было связано с проектом и данные исчезнут с радаров заказчика. |
|||
21
DmitrO
08.06.15
✎
16:02
|
вообще не понимаю что тут автор вымораживает..
|
|||
22
trdm
08.06.15
✎
16:02
|
#include <fstream.h>
void main() { fstream File("test.bin",ios::out | ios::in | ios::binary); int address = 0; char ch = 'a'; File.seekg(ios::beg); //go to the beginning of the file while (ch != 'K') { File.get(ch); //read one character if (ch == 'K') { cout << address; File.seekg(-1); File.put('k'); } address++; } File.close(); } |
|||
23
trdm
08.06.15
✎
16:04
|
Какой-то кривой текст..
|
|||
24
Вуглускр1991
08.06.15
✎
16:04
|
(21) Автор не знает, имеет негативный опыт использования курсовых по программированию в условиях продакшна и "дует на воду".
|
|||
25
Кирпич
08.06.15
✎
16:07
|
(21) ага. тролль какой то. в каждой книжке про программирование написано как писать в файлы, а он тут про какие то библиотеки и подводные камни. это называется паранойя
|
|||
26
Вуглускр1991
08.06.15
✎
16:15
|
(25) Да, это называется паранойя, и она говорит мне,
что в случае использования дот-нета с его Using System ... можно найти комп на котором не установлен нужной версии дотнет и на нем облажаться, а в случае использования студии, может стать необходимым редистрибьютабл пак, которого также может не оказаться. Мне нужны самые базовые обертки к вызовам kernel32.dll самы примитивные и простые абстракции, чтобы минимально зависеть от доставляемых к операционке пакетов, и в то же время самые надежные, чтобы ни одна служба не помешала писать в файл. И уж если говорить о реализации - чтобы операционка не читала все 100 Гиг секторов, кластреов и екстентов в которых этот файл лежит, а ровно первые 10 начальных с заголовком. Чтобы никаких "нет места на диске", ещё один файл с таким же размером не помещается в раздел. |
|||
27
Вуглускр1991
08.06.15
✎
16:16
|
(22) Спасибо за рыбу .. это С++ похоже. Возьму как основу.
|
|||
28
Кирпич
08.06.15
✎
16:25
|
(26) тебе в (16) уже написали, какие функции windows api тебе нужны. их 4 штуки. куда еще проще. ниже этого только драйвер. примеров в инете море.
https://yandex.ru/search/?text=запись%20файла%20в%20windows%20api&clid=2186620&lr=10740 |
|||
29
Вуглускр1991
28.06.15
✎
00:38
|
Сделал, в VS2005.
Был целый ряд неприятных сюрпризов. 1. Самым неприятным из которых оказалось, разница в интерпретации данных: согласно формата записи данных в файл все числа были записаны как big endian, а воспринимались уже на уровне выполнения кода как little endian, подключать библиотеку winsock2.lib в проект не хотелось из-за функций типа htonl(). 2. Далее по степени убывания: чтобы сделать небуферизированную запись сквозь кэш, надо не только создавать HANDLE файла с флагами FILE_FLAG_NO_BUFFERING | FILE_FLAG_WRITE_THROUGH, но и выравнивать буфер по размеру сектора, а в комментариях написано, что для разных устройств бывает необходимо ставить этот размер эмпирически (пишут, что для SSD это не 0x200, а 0x10000), после прикидок я выровнял по 0x1000. LPBYTE myBuffer = (LPBYTE)_aligned_malloc(SizeNeeded, 4096); а потом ещё void * BufferAligned = ROUND_UP_PTR(myBuffer, dwBytesPerSect); где dwBytesPerSect честно получил из GetDiskFreeSpace, а для него имя диска или сетевой шары вырезал из GetFullPathName. Вот только GetDiskFreeSpace рабтает для XP и 2003Б и х/з годен ли он для 8.1, а в 8.1 рекомендуют использовать структуру, которой нет в XP и 2003. Надо бы это по-честному обработать, но уже времени нет ... 3. Чтобы локаль писала по русски (а не знаками вопросов)пришлось добавлять #include <locale.h> и в тексте setlocale(LC_ALL,"Rus"); Вообще зависимостей вышло #include "stdafx.h" #include <windows.h> #include <tchar.h> #include <stdio.h> #include <strsafe.h> #include <locale.h> 4. Совершенно смешной сюр: если из HANDLEа созданного с GENERIC_WRITE | GENERIC_READ сделать FileRead в BufferAligned, то позиция курсора в файле сдвигается и запись затем идет в следующий блок, если не переставить курсор в начало :) 5. Теперь приятное: переменные типа GUID * можно сравнивать на == и можно присваивать одно другому, хотя отладчик VS пишет что-то про type mistmatch, когда я загадываю ему загадку (uuid1 == uuid2) нао бы проверить, вдруг сравниваются только первый числа в GUID-ах, хотя присваиваются все 16 байт (проверил память). ИТОГ: в 1С мне работать приятнее и проще. Эти С сносят крышак причем так, что нет удовлетворения или хотябы приступа ФГМ. |
|||
30
H A D G E H O G s
28.06.15
✎
01:30
|
(29) Что ты куришь?
|
|||
31
Кирпич
28.06.15
✎
01:33
|
(29) о чем это ты и нафига оно нам надо?
|
|||
32
Вуглускр1991
28.06.15
✎
02:29
|
(30), (31)
это я о том, что 4 -мя функциями надо уметь пользоваться, куча камней подводных и поэтому .. нужен был профи. А вы, ребята: "все просто ..." |
|||
33
DDwe
28.06.15
✎
07:05
|
(29) Ты точно бредишь, студент.
|
|||
34
Garykom
гуру
28.06.15
✎
07:28
|
(29)(32) не советую соваться с такими знаниями на форум где чисто с++ или прочие с# и т.д. тусуются
просто поймут что лох и раскрутят на $ |
|||
35
Garykom
гуру
28.06.15
✎
07:31
|
(34)+ и самое главное ты объясни зачем тебе в "расшифровщике" библиотека "winsock2.lib" ?
ЗЫ попал на бабки вымогателям, решил сам так деньгу зашибать? |
|||
36
Кирпич
28.06.15
✎
09:41
|
(35)он winsock байты местами переставлял и засчитал это в подводные камни. И нафигато решил, что нужно писать обязательно без буферизации. Короче была задача найти подводные камни и он их себе нашел. Он видит суслика.
|
|||
37
Garykom
гуру
28.06.15
✎
09:57
|
(36) интересно с каких "колес" такой "приход" бывает... аж до сусликов
|
|||
38
spock
28.06.15
✎
10:18
|
(29) сказал бы заказчикам, что не твоя специализация. Зачем эти околомесячные мучения?
|
|||
39
Вуглускр1991
28.06.15
✎
10:47
|
Вы господа, пока ничего путного не написали,
такое и от интернет школоло услышать можно, что собственно и показывает уровень. (36) от winsock я отказался, и ровно об этом написал. А почему запись без буферизации - моё требование из сути задачи, поймешь почему - поймешь постановку, тогда и решение станет очевидным. (38) За хорошие деньги. Теперь мне не нужен с++ программист, тем более разводила. |
|||
40
Вуглускр1991
28.06.15
✎
10:49
|
От с++, кстати, в программе кроме ++ ничего нет, ни нотации, ни ООП ... походу чистый С получился - как сам того и хотел.
|
|||
41
Кирпич
28.06.15
✎
10:57
|
(39) чота ты как то перевозбудился от своего величия. Записал в файл свои 15 байт и молодец. Зачем так раздувать щеки? :)
|
|||
42
Вуглускр1991
28.06.15
✎
11:05
|
(41) И то правда :)
я ж начал то с (29) опыт свой записал, гугл проиндексирует слова все правильные сказал, сам вспомню, да помогу кому вдруг .... завели с утра |
|||
43
Кирпич
28.06.15
✎
11:14
|
(42) ага. лет через 5 прочитаешь эту ветку и поймешь какой ты был наивный и глупый.
|
|||
44
Вуглускр1991
28.06.15
✎
11:21
|
(43) Дожить ещё надо ... а вообще от поругания себя "молодого и глупого" я уже отказался. Есть вещи доступные только тем, кто чего-то не знает. Программа, кстати, на уровне сделана, не надо трололо.
|
|||
45
H A D G E H O G s
28.06.15
✎
11:23
|
Что делает программа?
|
|||
46
Вуглускр1991
28.06.15
✎
11:26
|
(45) вносит изменения в файл виртуального диска.
|
|||
47
Кирпич
28.06.15
✎
11:37
|
(46) если ты делаешь что то противозаконное, то предупреди, что бы законопослушные граждане вовремя покинули ветку
|
|||
48
Кирпич
28.06.15
✎
11:41
|
(46) что программа вносит изменения в файл мы уже догадались. Нафига она это делает, и зачем, и почему всё так сложно да ещё и через подводные камни?
|
|||
49
vde69
28.06.15
✎
11:57
|
вот DLL с открытым кодом, лично работал с помощью нее с файлами > 10г и на 64х и на 32х серверах
немного доработай под себя и будет тебе счастье |
|||
50
vde69
28.06.15
✎
11:59
|
(49) правда у нее есть некоторые проблемы с регистрацией как компонента (с повторной регистрацией новой версии именно из 1с, ручная установка всегда проходит на ура)
|
|||
51
Вуглускр1991
28.06.15
✎
12:01
|
(47) вспоминай японскую мантру-поговорку "ни-сы".
(48) Если за год лимон не сделаю, все расскажу почтенной публике, а если сделаю - расскажу и продам. Однако, наведу: почему на Линуксе нет вирусов? (вопрос риторический ответ будет ниже) - ну да, я знаю, что есть, но крайне мало, линукс сам - один большой вирус (мягкая ирония в адрес любимого софта) ... так вот я же о чем -по данным мелкомягких винда в той или иной форме установлена на 89% компьютеров, моб. устройств и прочая оргтехника. Таким образом вирусописатели не зря выбирают винду в качестве объекта атаки. Был бы распространен Линь - и от вирусов под Линь все также бы вешались... А вот придумал я (быть может) что-то против вирусов и даже шифровальщиков. И пока это просто поделка для моих клиентов - никто не сломает. Но расскажи я о ней ... |
|||
52
Вуглускр1991
28.06.15
✎
12:04
|
(50) Спасибо ... только запуск 1С это событие, которое происходит в более поздние периоды работы компьютера (скажем так в "золотом веке" после загрузки ОС), а моя поделка - каменный топор.
|
|||
53
Кирпич
28.06.15
✎
12:05
|
(48) vde69, ты случайно не топменеджер госкорпорации? Просто постоянно замечаю в твоих советах три важнейших качества руководителя: твердость, решительность и полное непонимание ситуации. :)
|
|||
54
Кирпич
28.06.15
✎
12:08
|
(51) ты значит гений. Понятно. Подождем годик.
|
|||
55
Вуглускр1991
28.06.15
✎
12:09
|
(54) тему апайте
|
|||
56
vde69
28.06.15
✎
12:13
|
(52) ну сделать из этой DLL exe-шник это 10 минут работы, самый главный вопрос - это вопрос прав, ты вручную запускал под правми админа, а скрипт небось хочешь повесить в логон юзера :)
|
|||
57
Garykom
гуру
28.06.15
✎
12:14
|
(51) мне как бы уже заранее нравится ваш лисапед...
проблема в том что почти все новое это хорошо забытое старое ЗЫ говорить что от вирусов под линукс так же бы все вешались это несколько опрометчиво примерно как говорит тоже самое и про маки, какая какая там у OSX распространенность не напомните? а кол-во вирусов? |
|||
58
Вуглускр1991
28.06.15
✎
12:15
|
(56) Вот это сейчас самое не решенное: до логона всяких юзеров, во время логона диск уже должен существовать. Вроде эту задачу решает планировщик. Сегодня в этом уверюсь.
|
|||
59
vde69
28.06.15
✎
12:17
|
(53) как я понимаю - автор хочет корректировать "системный" файл. Я ничего не упустил?
|
|||
60
Garykom
гуру
28.06.15
✎
12:19
|
(59) автор хочет изобрести песочницу или бэкапницу или еще какую то лисапеду со своими квадратными колесами
|
|||
61
Кирпич
28.06.15
✎
12:19
|
(59) он не говорит чего хочет корректировать. Файл виртуального диска какого то.
|
|||
62
vde69
28.06.15
✎
12:19
|
(58) а ты глянь в политике, вроде там есть возможность подключения скрипта до логона без всяких планировщиков
|
|||
63
Garykom
гуру
28.06.15
✎
12:29
|
вообще самое лучшее что я видел средство от вирусов
это было реализовано в некоторых школах/вузах еще на вин98 (где было от вирусни не продохнуть) при каждом включении компа... он восстанавливается из "чистого образа" т.е. система и установленные проги просто копируются из скрытого раздела диска или даже по сетке с сервера а все "документы" при выключении грохаются в архив по дате изменения и также при включении/загрузке восстанавливаются самые последние если ставится допом какая то прога то при выключении можно было выбрать сносить ее нафик или тоже засунуть в отдельный архив некий принцип использования резидентных антивирусных мониторов, но без лишних вопросов юзверю например прога при установке лезет в кучу мест и меняет кучу файлов, но всегда есть система до этой проги и отдельно пишутся все измененное прогой в любой момент можно любую прогу выкинуть нафик, при этом другие восстановятся чистенькие |
|||
64
Garykom
гуру
28.06.15
✎
12:30
|
(63) но это прокатывало когда винда занимала 300 метров...
|
|||
65
Вуглускр1991
28.06.15
✎
12:34
|
(62) А вот потерял я ссылку про политики. Можно в хомобейсик винде любые политики экспортировать в текстовый файл, а потом засунуть обратно с изменениями, и я даже делал это.... но вот искал недавно и не нашел :(( можно прикрутить gpedit но это с нарушениями соглашений, и secpol по прежнему не работает
|
|||
66
Вуглускр1991
28.06.15
✎
12:35
|
(63) Да идея она самая, хорошо забытое старое :)
|
|||
67
Jump
28.06.15
✎
12:37
|
(2)Размер файла вообще никак не влияет на выбор языка.
Разницы вообще нет с каким файлом работать 1килобайт или 1террабайт. |
|||
68
Jump
28.06.15
✎
12:39
|
(46)А зачем вносить изменения в файл виртуального диска?
Какой формат диска? |
|||
69
Кирпич
28.06.15
✎
12:43
|
(68) это и так все знают, но у vde69 для больших файлов есть целая dll . Для больших файлов сотит дороже видимо.
|
|||
70
Вуглускр1991
28.06.15
✎
12:44
|
(67) Как считаешь "Borland Pascal 7.0" на такую задачу годится?
(68) VHD |
|||
71
Jump
28.06.15
✎
12:45
|
(69)А при чем тут vde69?
|
|||
72
Jump
28.06.15
✎
12:47
|
(70)Любой. В том числе и паскаль.
А зачем перезаписывать VHD с помощью каких-то программ? Не проще ли примонтировать и поменять информацию? |
|||
73
Кирпич
28.06.15
✎
12:47
|
(70) конечно годится. От языка нужно только чтобы можно было dll подключить.
|
|||
74
Вуглускр1991
28.06.15
✎
12:58
|
(72) (73) Господа, поскольку к ваштм постам не прикреплено метки "сарказм" мне придется объяснить: что среда разработки BP7.0 компилирует программу в вызовы функции MS DOS версий 5 и 6, который оперируют 16-ти битными регистрами и не могут представить себе файла большего, чем 2^32 байт, что соответствует 4 Гигам - это тот максимум который в то время казался непреодолимым и надолго достаточным. Отголоски этой проблемы до сих пор звучат в вопросах передачи процесса загрузки из загрузочной записи БИОС в раздел, который отстоит от начала диска более чем на 8 Гигов (можно почитать в нете по ключам mbr, initramfs ...)
|
|||
75
Jump
28.06.15
✎
13:02
|
(74)Ну видимо какой-то древний язык.
Любой современный язык работает с любым размером файла, пайтон, визуал бэйсик, пэхапе и прочие джавы. |
|||
76
Вуглускр1991
28.06.15
✎
13:05
|
(75) То, что мне рекомендовали в этой теме - компиляция проекта на VS в прямые вызовы kernel32.dll меня полностью устроило. Думаю, что сходных результатов можно было добиться в С# проекте, однако в vb, php и прочих джавах между программой и записью в файл стояло бы слишком много посредников - что сказалось бы разными видимыми и невидимыми ограничениями на качество и даже на возможность записи. Их кстати и без того повылазило :)
|
|||
77
Кирпич
28.06.15
✎
13:07
|
(74) а как же на нем писали для windows, интнресно, и нафиг ты его вообще вспомнил:)
|
|||
78
Jump
28.06.15
✎
13:12
|
(76)Какие нафиг посредники на vb, пхп, и джаве?
|
|||
79
ДенисЧ
28.06.15
✎
13:12
|
(77) на 7м под винду не писали )
|
|||
80
Вуглускр1991
28.06.15
✎
13:13
|
(77) А я помню, как описывал окно не визуальным редактором а прямо из текста программы :) спс за приятное напоминание
(65+) а сегодня мне повезло и про политики я все нашел secedit command-line tool и https://www.microsoft.com/en-us/download/details.aspx?id=25250 |
|||
81
Вуглускр1991
28.06.15
✎
13:14
|
(79) Писали, у меня в графическом окне теннисные мячики от стен отражались
|
|||
82
Кирпич
28.06.15
✎
13:15
|
(79) а на каком писали? Я помню чота там было про win32
|
|||
83
Кирпич
28.06.15
✎
13:17
|
(81) ну если писали для win32 то пойдет
|
|||
84
ДенисЧ
28.06.15
✎
13:18
|
(81) НЕа.. Под вин16 - было.
|
|||
85
Вуглускр1991
28.06.15
✎
13:20
|
(84) да, для вин 16 - вот уже и не помню :) думал, что раз в 98 винде запускалась - то w32
|
|||
86
Вуглускр1991
28.06.15
✎
13:22
|
(83) не факт, что подошло бы - внешние расширения к компилятору могли не содержать блоков работы с файлами 32 бит
|
|||
87
ДенисЧ
28.06.15
✎
13:24
|
(85) Как плохо думать-то, оказывается... )))
|
|||
88
DDwe
28.06.15
✎
13:26
|
ТС по развговору лет 20-25, гонору много, а ума нет.
|
|||
89
Вуглускр1991
28.06.15
✎
13:30
|
(88) Мы тут программы обсуждаем, знаете ли, компьютеры
|
|||
90
Кирпич
28.06.15
✎
13:31
|
(86)какие нафиг блоки, если ты напрямую с winapi. Ты опять выдумываешь себе .камни
|
|||
91
DDwe
28.06.15
✎
13:31
|
(89) И? Это ума добавляет?
|
|||
92
Вуглускр1991
28.06.15
✎
13:33
|
Вам? - нет.
|
|||
93
DDwe
28.06.15
✎
13:34
|
(92) Вот так и знал, что такой бедет ответ. Точно 25.
|
|||
94
DDwe
28.06.15
✎
13:36
|
Это нужно умудриться, что бы с такого простого вопроса как запись файла, такую тему и столько проблем раздуть.
|
|||
95
Кирпич
28.06.15
✎
13:37
|
(94)зато весело
|
|||
96
Вуглускр1991
28.06.15
✎
13:38
|
(94) Это бывает :) видели бы Вы тему "как кастрировать кота в домашних условиях"
|
|||
97
Кирпич
28.06.15
✎
13:39
|
(96)про кота тоже твоя тема?
|
|||
98
DDwe
28.06.15
✎
13:40
|
(96) Ну вот ты и кастрируешь всем мозг. А то что про линукс с вирусами написал, так вообще бред за гранью.
(95) +100 |
|||
99
Вуглускр1991
28.06.15
✎
13:41
|
(97) нет увы :)
|
|||
100
vde69
28.06.15
✎
13:42
|
(94) что-бы таких тем не было, нужно в языке использовать функции ОС а не языка, и больше проблем нет...
|
|||
101
spock
28.06.15
✎
18:16
|
(88) не нужно вестись на год в ниве :-)
Тут как раз человек с большим жизненным опытом, А не юнец. |
|||
102
Zamestas
28.06.15
✎
19:05
|
(0) Может спроецировать в память и через AWE ковырять?
|
|||
103
Кирпич
28.06.15
✎
19:15
|
Ну опять началось
|
|||
104
Вуглускр1991
29.06.15
✎
11:48
|
(102) Слава богу заголовок и копия футера лежат прямо в начале файла, все получилось без AWE.
А вот синхронизация процесса входа пользователя с подключение диска - вот это была неожиданно трудная задача для W7homebasic |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |