Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > .NET для новичков > Программа не запускается на целевой машине


Автор: alnight 22.6.2016, 10:10
Здравствуйте. У меня 2 вопроса.

Скомпилировал программу на своем компьютере (Windows 8 x64, VS2010).
Но она не запускается на целевой машине (Windows 7 x64/x32, .NET ramework 4.5).

1. Попробовав запустить программу на целевой машине, она нормально заработала, но при выполнении строки с инициализацией srand, вызывает ошибку:

System.DllNotFoundException: Unable to load DLL 'MSVCR100.dll': The specified module could not be found. (Exception from HRESULT: 0x8007007E)

В итоге я понял, что эту ошибку вызывыет строка
Код

srand(time(0) + DateTime::Now.Millisecond);


Правда, поставив vcredist_x86.exe на целевой комп все заработало, но вопрос остался, почему не запускалось раньше, ведь .Net framework был установлен, а значит должно было работать "из коробки"?

2. Я считываю параметры аппаратного обеспечения, в частности, номер жесткого диска. Тут победить пока не удалось, на целевой машине показывается ошибка с прикрепленной картинки.
Ее вызывает этот код:

Код

ManagementObjectSearcher ^searcher = gcnew ManagementObjectSearcher("SELECT * FROM Win32_DiskDrive");
for each (ManagementObject ^wmi_HD in searcher->Get())
{
    hdd_number += wmi_HD["SerialNumber"]->ToString();
}
MD5 ^md5 = MD5::Create();
array <Byte> ^bufferr = Encoding::UTF8->GetBytes(hdd_number);
try
{
    array <Byte> ^data_byte = md5->ComputeHash(bufferr);
    for (int i = 0; i<data_byte->Length; ++i)
        hdd_numer_hex += data_byte[i].ToString("x2");
}
finally
{
    delete md5;
}


Как устранить появление этой ошибки? Или хотя бы как мне получить серийный номер жесткого диска/проца/материнской платы, чтобы программа запускалась на других компьютерах без проблем?

Включены вот эти файлы:
#include <windows.h>
#include <stdio.h>
#include <conio.h>
#include <ctime>
#include <UrlMon.h>
#using "System.dll"
#using "WindowsBase.dll"
#using "System.xml.dll"
#using "System.Management.dll"

Автор: Cuboid 23.6.2016, 18:51
Цитата

но вопрос остался, почему не запускалось раньше, ведь .Net framework был установлен, а значит должно было работать "из коробки"?

Вы сами ответили себе на свой вопрос уже:
Цитата

Правда, поставив vcredist_x86.exe на целевой комп все заработало

MSVCR100.dll не относится к .NET Framework, она является частью "Microsoft Visual C++ 2010 Redistributable Package".

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)