Witam.
Jestem w trakcie testowania przepisanej aplikacji do analizowania flakow komputera - od prosta apka ktora w konsoli wyswietla porownanie statystyk rzeczywistej i bazodanowej.
Aplikacja dziala na wiekszosci komputerow ktore sprawdzam, mam jednak problem z niektorymi. Rzeczy ktore wiem:
1. Podczas uruchamiania aplikacji probuje okreslic model urzadzenia wywolujac zapytania wmi. Wywala taki wyjatek (calosc przepisana recznie, dodam zdjecie tego co wywala konsola jakbym sie gdzies pomylil przepisujac):
Unhandled Exception: System.TypeInitializationException: The type initializer for "System.Management.WmiNetUtilsHelper" threw an exception -> System.ArgumentNullException: Value cannot be null.
Parameter name: ptr.
at System.Runtime.InteropServices.Marshal.GetDelegateForFunctionPointer(IntPtr ptr, Type t)
at System.Runtime.InteropServices.Marshal.GetDelegateForFunctionPointer[TDelegate] (IntPtr ptr)
at System.Management.WmiNetUtilsHelper.LoadDelegate[TDelegate] (TDelegate& delegate_f, IntPtr hModule, String procName)
at System.Management.WmiNetUtilsHelper..ctor()
--end of inner exception stack trace--
at System.Management.MTAHelper.IsNoContextMTA()
at System.Management.MTAHelper.CreateInMTA(Type type)
at System.Management.ManagementPath.CreateWbemPath(String path)
at ConsoleApp2.Retriever.ReadDetailsFromComputer(String query, String property, String scope), Retriever.cs line:92
at ConsoleApp2.Retriever.AnalyzeForModel(), Retriever.cs line:341
at ConsoleApp2.Program.Initialization(String model), Program.cs, line: 1328
at ConsoleApp2.Program.Main(string[] args), Program.cs line:41
Wyjatek wywala dokladnie w tym miejscu kodu, podczas tworzenia obiektu ManagementObjectSearcher:
public static object ReadDetailsFromComputer(string query, string property, string scope = @"root/cimv2")
{
object anwser = null;
ManagementScope _scope = new ManagementScope(scope);
ObjectQuery _query = new ObjectQuery(query);
using (ManagementObjectSearcher search = new ManagementObjectSearcher(_scope, _query))
{
foreach (var z in search.Get())
{
anwser = z[property];
}
}
(...)
}
2. Rzecz dzieje sie na buildach Windows 10 poniżej 15063 (problem wyskoczyl na systemach z 1, 2 i 3 buildem). Nie wiem jak z czwartym buildem. Z kolei tak jak mowilem, na wiekszosci komputerow ktore sprawdzam problemu nie ma. Domyslam sie ze chodzi o wsparcie samego windowsa, ale z drugiej strony .net core app ktora sama ma wszystkie biblioteki jakich uzywa nie powinna dzialac tak czy tak?
I czy w takim razie na komputerach z win8 bedzie taki sam problem?
3. Aplikacja jest pisana w .net core 2.1, jest jako Self-contained, aby byla przenosna na pendrive.
4. Calosc kodu na github: https://github.com/Duch003/ConsoleApp2
Jak sie pozbyc tego problemu? Ewentualnie gdzie mam szukac rozwiazania?
Pozdrawiam.