Bir C++ Windows programım var. Bazı verileri olan bir metin dosyası var. Şu anda metin dosyası ayrı bir dosyadır ve çalışma zamanında yüklenir ve ayrıştırılır. Bunu bir kaynak olarak ikilinin içine yerleştirmek nasıl mümkün olabilir?Yerel bir Windows uygulamasında bir kaynağa metin dosyası yerleştirme
cevap
Eğer yerel bir Windows uygulaması üzerinde çalışıyoruz beri, ne istiyorum:
ayrıntılı olarak bu konuda genişletmek yığın taşması sorular çok var metin dosyasının içeriğini derlenmiş kaynağa gömmek için kullanıcı tanımlı bir kaynak oluşturmaktır.
Kullanıcı tanımlı bir kaynağın biçimi the functions for loading it olduğu gibi documented on MSDN şeklindedir.
Böyle bir kaynak dosyasında metin dosyasını gömmek: nameID
kaynağı tanımlayan ve typeID
255 den bazı benzersiz 16-bit işaretsiz tamsayı büyüktür bazı özel 16 bit işaretsiz tam sayıdır
nameID typeID filename
Bu, kaynak türünü tanımlar (bu tamsayıları resource.h
dosyasında tanımlayabilirsiniz). filename
, ikili içeriğinin derlenmiş kaynağa gömülmesini istediğiniz dosya yoludur.
Yani bunun gibi olabilir:
resource.h
yılında:
// Other defines...
#define TEXTFILE 256
#define IDR_MYTEXTFILE 101
senin kaynak dosyasında:
#include "resource.h"
// Other resource statements...
IDR_MYTEXTFILE TEXTFILE "mytextfile.txt"
Sonra hata denetimi kodu atlanmış (bunu böyle yük netlik için):
Kaynağın, yürütülebilir dosyanın binary'sinde bulunduğu ve kaynağı otomatik olarak sileceği için, kaynağı serbest bırakmak zorunda olmadığınıza dikkat edin (işlev FreeResource()
, 32 bit ve 64 bit Windows'ta hiçbir şey yapmaz sistemleri).
Veriler yürütülebilir ikili dosyada bulunduğundan, doğrudan alınan işaretçi aracılığıyla değiştiremezsiniz (bu nedenle LoadFileInResource()
işlev uygulaması işaretçiyi bir const char*
içinde saklar). Bunu yapmak için BeginUpdateResource()
, UpdateResource()
ve EndUpdateResource()
işlevlerini kullanmanız gerekir.
Bir .h/.cc dosyası için veri oluşturmak üzere xxd
(bir linux makinesinden veya muhtemelen cygwin'den) kullanabilirsiniz.
-1 PE (+) dosyaları zaten özel kaynakları depolayabilir ve Windows oluşturma araçları ihtiyacınız olan her şeye sahiptir. Kaynak kod sözdizimi belgelendi ve işletim sistemi bu verilere erişmek için API'ler sağlıyor. Bu cevap başka bir sorunun cevabıdır. – IInspectable
- 1. Windows 8'de bir Metin Dosyası okuyun
- 2. SharePoint web uygulamasında bir görüntünün üzerine bir düğme yerleştirme
- 3. Bir Windows 8 uygulamasında yansıma
- 4. Windows biçiminde bir metin dosyası oluşturulamıyor, hata alıyorum 'System.ArgumentException'
- 5. Otomatik Yammer gömülü metin kutusuna metin yerleştirme
- 6. WinRT kullanarak Windows 8 Metro uygulamasında ses dosyası nasıl oynanır?
- 7. Windows toplu komut dosyası bir
- 8. Windows XP komut satırı uygulamasında görüntülenen metin nasıl kaydedilir
- 9. Bellek içine bir dll yerleştirme
- 10. i bir metin dosyası var tarayıcıda
- 11. C++ bir dizgede (metin dosyası)
- 12. Kaynağa geçersiz erişim - Metin için Konuşma API'si
- 13. Bir e-postaya bir metin dosyası iliştirme
- 14. Spring OAuth 2: bir kaynağa genel erişim
- 15. Bir Windows Forms Uygulamasında Uygulama İstisnalarını Yakalama
- 16. Bir Windows Mobile Uygulamasında DataGrid'in sütun genişliği
- 17. Bir wpf uygulamasında Windows kapatma olayını yakala
- 18. Panelde bir Windows Forms uygulamasında GroupBox
- 19. C# Windows Uygulamasında bir Web Hizmeti Kullanın
- 20. Bir Windows Forms Uygulamasında ConfigurationManager.AppSettings'e erişilemiyor
- 21. Android uygulamasında bir metin perdayı nasıl görüntüleyebilirim
- 22. Bir iPad uygulamasında seçili metin nasıl kaldırılır
- 23. PDF dosyası bir Java uygulamasında nasıl yazdırılır?
- 24. iOS uygulamasında bir mp3 dosyası çalma
- 25. , windows uygulamasında (net) kimlik değerini
- 26. Phonegap'ten yerel bir sqlite dosyası okuma
- 27. Android'de bir tepki-yerel uygulamasında nasıl bir versionName var?
- 28. Android'de bir Web Görünümünde yerel bir dosyaya parametreler nasıl gönderilir? Yerel bir Android uygulamasında çalışan
- 29. NSLocationWhenInUseUsage .strings dosyası kullanılarak yapılan bir yerel konumlandırma dosyası çalışmıyor
- 30. jQuery Yerel dosya sisteminden Ajax isteği (Windows dosyası: ///)
Bir tane daha merak ettim [burada] (http://stackoverflow.com/questions/35521857/best-practice-to-protect-resources-against-reverse-engineering). Cevabınızla ilgili ikinci soruma cevap verebilir misiniz?Sadece cevabınızda ana olan kodu içerecek bir işlevi olan bir dll dosyasına nasıl sahip olunur. – utvecklare
"Sistem program çıktığında bunları otomatik olarak silecektir" Sistem serbest kaynaklardan çıkarken programların tamamı yok mu? Bir yürütülebilir dosyanın çalışması sırasında bellek sızıntısı ve kaynak sızıntısı oluşur. Yani bu program aynı kaynaktan n yüklerse, bir kaynak sızıntısında yayınlanır. – Raindrop7
Kaynak dosyasının özelliklerinde "Null Terminate Strings" var –