rmds Ответов: 2

Shellexecute() для открытия командной строки для проверки контрольной суммы текстового файла


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

Что я уже пробовал:

HINSTANCE retval = ShellExecute(NULL, L"open", L"cmd.exe", L"/C cksum mytextfile.txt", L"C:\\Users\\kingbird\\Desktop\\ServerAppl\\Transfer\\mytextfile.txt",
SW_SHOWNORMAL);


Пожалуйста, сделай это правильно.

2 Ответов

Рейтинг:
1

OriginalGriff

Почему вы используете утилиту командной строки для выполнения контрольных сумм? Вместо этого используйте хэш-значение: SHA (или даже MD5, так как это не приложение безопасности): Реализация хэша SHA1 с использованием Windows Cryptography API и C++[^]
И это мисс линк: Пример программы C: создание хэша MD5 из содержимого файла - приложения Windows | Microsoft Docs[^]

Таким образом, вы полностью контролируете код проверки, и обновления системы не могут повлиять на то, как работает ваш код.


Рейтинг:
0

KarstenK

Вы должны выяснить, в чем проблема. Сначала откройте cmd и выполните инструкцию локально. Часто это проблема прав доступа, и поэтому оболочка не знает, как должны быть решены пути. Доказательство того, что расчет не намекает на какую-то другую проблему.

По моему опыту, CreateProcessAsUserW и другие функции из этого API привели к лучшим результатам. Немного громоздко, но это сработало.