Für kleinen Projekt kannst du die Community Edition von Syncfusion nutzen
https://www.syncfusion.com/products/communitylicense
Metro Style for WPF ist in Free Version auch inklusiv.
@manullino : Wenn du ein Azure Mobile Services erstellst, wird demsprechend eine SQL Datenbank verbunden. Diese Datenbank findest du unter "SQL Datenbanken" Kategorie.
In "SQL Datenbanken" Kategorie wenn du auf dem Pfeil neben der Datenbank klickst, wirst du in den Verwaltungsbereich weitergeleitet.
Dort findest du ein Link von "SQL-Datenbank-Verbindungszeichenfolgen für ADO .Net, ODBC, PHP und JDBC anzeigen".
Durch dies Link kriegst du das ConnectionString zur Datenbank. Jetzt kannst du die Datenbank mit deinem Code First EF verbinden und bearbeiten.
Ich habe folgenden Code in my alten Projekt gefunden. Das war mein private Projekt und ich habe damit seit Jahre lange nichts zu tun. Ich habe jetzt keine Ahnung über Struktur von OpenXML. 😄. Frag mich lieber nicht wieso der Code so sein muss. 😁
private string GetCellValue(Cell cell)
{
try
{
string value = "";
if (cell.CellFormula != null && cell.CellFormula.Text != "")
{
string formulaText = cell.CellFormula.Text;
if (formulaText.ToUpper() == "TODAY()")
value = DateTime.Now.ToShortDateString();
else
value = cell.CellValue.Text;
}
else
{
value = cell.InnerText;
}
if (cell.DataType != null)
{
switch (cell.DataType.Value)
{
case CellValues.SharedString:
if (sharedStringTable != null)
{
value = ((SharedStringItem)sharedStringTable.ElementAt(int.Parse(value))).InnerText;
}
break;
case CellValues.Boolean:
switch (value)
{
case "0":
value = "FALSE";
break;
default:
value = "TRUE";
break;
}
break;
}
}
return value;
}
catch (Exception ex)
{
throw ex;
}
}
sharedStringTable ist von SharedStringTablePart gesetzt
sharedStringTable = document.WorkbookPart.GetPartsOfType<SharedStringTablePart>().FirstOrDefault().SharedStringTable;
@herbivore: Schade dass du nicht mehr aktiv bist. Vielen Dank für deine Hingabe. Deine Beiträge sind für mich persönlich sehr wertvoll.
@Nexus633 : Versuchst du mal steamcmd.exe mit cmd.exe statt direkt zu starten. Ein Beispiel kannst du hier lesen http://hintdesk.com/c-read-console-output-asynchronously/
@Puma321: Die SendKeys sendet Taste nur zum aktiven Fenster. Es kann sein dass das Fenster des Programm nicht mehr aktiv ist und geht daher die SendKeys nicht mehr.
Ich schlage die PostMessage statt SendKeys vor. Die PostMessage sendet die Taste genau an ein bestimmtes Fenster. Ein Beispiel C# – Send keys spacebar to windows
Hi Abt, die gleiche Meinungen über Redis habe ich schon mehr mals gehört.
Ich denke aber, Redis kann mehr . Ich weiß nicht in wie fern eine Datenstruktur für Redis komplex ist.
Aber ein Twitter-Clone ist für mich schon komplex genug http://redis.io/topics/twitter-clone und noch ein paar Kandidaten http://redis.io/topics/whos-using-redis
Hast du vielleicht ein Beispiel oder ein Link für Redis + komplex Datenstruktur? Ich möchte auch gern darüber wissen.
@willkuer : Ich würde gern auch NoSQL (Redis oder MongoDB... je nach deinem Datenstruktur) empfehlen. Wenn deine Auswertung nicht extreme Echtzeit ist, bietet NoSQL mehr Vorteile als direkt mit XML Dateien+List<>
Du musst nicht komplete Daten laden und dann filtern. Sondern du kannst direkt mit dem Index (von der Datenbank) filtern. Es spart Zeit und Arbeitspeicher für dein Programm.
Außerdem du kannst auch die Datenbank auf mehreren Server verteilen. 1 für Eingabe, 4 für Auswertung (je nach dem was für dich wichtiger). Es beschleunigt also das Auslesen.
Schlüsselwörte: NoSql, Map/Reduce, Apache Hadoop.
Edit: Deutlicher ausgedrückt.
@KPhoenix:
Ich nutze gerade diesen Code um Single-Instance-App zu erstellen. Probier mal.
ShowWindow und SetForegroundWindow sind Windows API Funktionen mit PInvoke.
[STAThread]
private static void Main()
{
bool isOwnMutex = false;
Mutex mutex = new Mutex(true, "E6720F8F-316F-423C-B801-86035273D03A", out isOwnMutex);
if (isOwnMutex)
{
try
{
//Start app
}
catch (Exception ex)
{
//Exception
}
finally
{
mutex.Close();
}
}
else
{
foreach (Process p in Process.GetProcessesByName(Application.ProductName))
{
OSUtil.ShowWindow((int)p.MainWindowHandle, 1);
OSUtil.SetForegroundWindow(p.MainWindowHandle);
}
}
}
@Robin0: Die Temperature von CPU kannst du nur auslesen wenn MainBoard/CPU den Wert unterstützt.
Versuch mal mit dem Code unten (erzeugt von WMI Code Creator)
using System;
using System.Management;
using System.Windows.Forms;
namespace WMISample
{
public class MyWMIQuery
{
public static void Main()
{
try
{
ManagementObjectSearcher searcher =
new ManagementObjectSearcher("root\\WMI",
"SELECT * FROM MSAcpi_ThermalZoneTemperature");
foreach (ManagementObject queryObj in searcher.Get())
{
Console.WriteLine("-----------------------------------");
Console.WriteLine("MSAcpi_ThermalZoneTemperature instance");
Console.WriteLine("-----------------------------------");
Console.WriteLine("CurrentTemperature: {0}", queryObj["CurrentTemperature"]);
}
}
catch (ManagementException e)
{
MessageBox.Show("An error occurred while querying for WMI data: " + e.Message);
}
}
}
}
Hallo,
ich versuche mich nun auch Thumbnail von Office 2010 Dateien zu generieren.
Wenn die Thumbnail schon in Datei vorhanden ist, kann ich ohne Problem durch Shell-Funtionen oder Windows API Codec Pack kriegen. Aber das Thumbnail ist nur vorhanden wenn der Benutzer explicit auf Option „Minitur speichern“. Bitte Anhang sehen.
Meine Frage: Kann ich irgendwie Thumbnail von Office 2010 Dokumente generieren ohne Office zu installieren?
Ich denke dass ich Office 2010 Dokumente ins HTML mit XSLT konvertiere und dann Thumbnail von dieser HTML Datei zu generieren. Das ist trotzdem großer Aufwand um ein XSLT Schema aufzubauen. Wie sind eure Meinungen dazu? Vielen Dank.
@Ahrimaan: Vielleicht hilft es dir weiter HTML5 Offline Applications: ‘Donut Hole’ Caching
@OasisCritter: Vielleicht habe ich dich falsch verstanden aber um die Punkte darzustellen ist einfach.
public void ExecuteExample2()
{
mainChart.Series.Clear();
mainChart.DataSource = null;
int yValue = 50, xValue = 0;
Random r = new Random();
mainChart.Series.Add(new Series());
for (int index = 0; index < 20; index++)
{
yValue = r.Next(1, 100);
xValue++;
mainChart.Series[0].Points.Add(new DataPoint(xValue, yValue));
}
mainChart.Series[0].ChartType = SeriesChartType.FastLine;
mainChart.Series[0].MarkerStyle = MarkerStyle.Circle;
mainChart.Series[0].MarkerSize = 8;
mainChart.Series[0].IsValueShownAsLabel = true;
mainChart.Series[0]["LabelStyle"] = "Auto";
}
Da findest du noch die andere Beispiele für MS Chart: Samples Environment for Microsoft Chart Controls
@el_vital: Ich kriege schon hin mit .Net die Druckereinstellungen zu speichern aber ich kann nur global speichern. Vielleicht hift dir das Link C# - Invoke printer properties dialog and save printer settings
@Ahrimaan: Ich denke "Tasks" muss ein Property von "Person" sein. DataGrid lädt jedes Person in eine Zeile und "RowDetails" bindet noch mal die Eigenschaften des "Person" in SubDataGrid. "Tasks" ist nicht Eigenschaft des "Person" daher SubDataGrid ist leer.
@Cr95is: Durch das Property "DataContext" des "item" kannst du die Werte des "item" auslesen.
@#coder#: Bei mir geht ohne weitere Einstellung. Könnte es sein, dass der Inhalt leer ist daher du nichts siehtst? Du kannst ein Beispiel hier schauen bei dem PDF Report Excel, Image, PDF Report with RDLC in Master/Details and MultiColumn
@DNAofDeath: Ich denke du musst nicht unbedingt mit WIX machen. So wie ich verstehe, musst du einfach dein Assembly installieren und einen Eintrag in Registry machen. Und diese Aktionen können alle Installers machen.
These assemblies are installed as any other normal files would be installed using Windows Installer, with the addition of a registry key under SOFTWARE\Microsoft.NETFramework\AssemblyFolders – either under HKEY_LOCAL_MACHINE for all users, or HKEY_CURRENT_USER for the current user.
@DNAofDeath: Mir ist noch nicht klar dass du schon dein Assembly in GAC erfolgreich registrierst daher ich poste hier noch ein Link Installing Assemblies for Runtime and Design-time Use. Es erklärt wie du dein Assembly in Visual Studio verfügbar machen kannst. Hope it helps.
@LodiGoesC#: Mit ID3TagLib habe ich leider keine Erfahrung aber mit TagLibSharp kannst du das Bild des Album der .mp3 Datei ändern. Der Code sieht ungefähr so aus
TagLib.File file = TagLib.File.Create("UMTD.mp3");
file.Tag.Pictures = new Picture[] { new Picture("Pic.png") };
file.Save();
Das Beispiel kannst du von C# – How to read MP3 header? herunterladen.
@pennertenner: Mit ReportViewer kannst du eine Vorlage mit bestimmter Größe und Feldern erstellen. Dann druckst du einfach dein Barcode + Text mit dieser Vorlage direkt auf Etikettenpapier.
@Lukas12345: Ich weiß nicht ob du dies Link gefunden hast.A DXF Reader Solution and a Simple DXF Viewer
@TM_87: Du kannst unter den Punkt 7.2 vom Post Publish WCF Services in IIS 7 step by step for dummies schauen. Da ist eine Anleitung für "Publishing WCF in IIS". Die Bilder sind nicht mehr verfügbar aber ich glaube die Text hilft dir vielleicht.
@MAjbO: Versuch mal mit dem SimpleTextExtractionStrategy() bei PdfTextExtractor. Der Code sieht ungefähr so aus
string text = PdfTextExtractor.GetTextFromPage(pdfReader, 1, new iTextSharp.text.pdf.parser.SimpleTextExtractionStrategy());
Du kannst auch dein "custom strategy" schreiben um den Text richtig zu extrahieren.
@Sebastian.Lange: Erstmal vielen Dank für tolle Bibliothek. Ich hätte gern eine Frage über die Meldung von Bibliothek. Wenn Frage in diesem Thread nicht erlaubt ist, bitte für mich in richtigen Ort verschieben. Danke.
Stand: Ich habe auf meinem Rechner Microsoft Office 2010 installiert außer MS Access. Ich nutze noch die Version 2003 für MS Access. Bitte siehe Anhang.
Frage: Ich würde gern mit deiner Bibliothek alle Kontrolle von aller Formularen in einer MS Access Dateien ermitteln. Der Code sieht ungefähr so aus
LateBindingApi.Core.Factory.Initialize();
Access.Application application = new Access.Application();
try
{
application.OpenCurrentDatabase(@"D:\Temp\tri.mdb", false);
foreach (AccessObject frm in application.CurrentProject.AllForms)
{
application.DoCmd.OpenForm(frm.Name, Access.Enums.AcFormView.acDesign, Missing.Value, Missing.Value, Access.Enums.AcFormOpenDataMode.acFormPropertySettings, Access.Enums.AcWindowMode.acWindowNormal);
foreach (var contron in application.Forms[frm.Name].Controls) //Hier tritt Fehler auf
{
//Tu was
}
application.DoCmd.Close(Access.Enums.AcObjectType.acForm, frm.Name, Access.Enums.AcCloseSave.acSaveYes);
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
Ich habe dann Exception bekommen. Es lautet
"Class not exists: NetOffice.AccessApi.Checkbox"
"Class not exists: NetOffice.AccessApi.Combobox"
Wie konnte ich diese Meldung verstehen? Danke.
Hallo diana,
hilft dir das Link vielleicht Implementing Virtual Mode in the Windows Forms DataGridView Control
Ich denke du musst noch SeDebugPrivilege auf Remote Process aktivieren. Da sind noch ein paar Beispiele für dich sehr hilfreich
@Sebb767: ITaskList ist vielleicht was du brauchst ITaskbarList
@snupi: Du kannst einen Dummy-Logger erstellen und das Appender auf Dummy-Logger zuweisen damit das Appender konfiguriert und in die Appender-Liste hingefügt wird. Dann kannst du jederzeit dies Appender in anderen Logger hinfügen/entfernen.
EDIT: Oder fügt einfach das Appender in root hin wenn möglich
@marian04: Probier mal mit dem Beispiel KB322091: Wie Sie Rohdaten an einen Drucker senden, mithilfe von Visual c# .NET.
Oh, herbivore hat Recht. Bei meinen Rechner habe ich ein Environment Variable gesetzt daher funktioniert der Code oben. Ich dachte es wird als Default gesetzt aber wenn ich nochmal bei frischen Rechner teste, der Eintrag ist nicht vorhanden. Sorry.
@freundblase : Geht es mit dem
Process.Start("iexplore.exe", "http://www.microsoft.com");
@Rahvin: Mach eine Schleife durch die Liste von Genre und wende die LINQ Abfage auf selben Objekt an. Der Code sieht ungefähr so aus (ich habe mit Gefühl geschrieben, ich garatiere nicht dass es Syntax korrekt ist)
var lstMedias = context.Medias
foreach (string genre in lstGenres)
{
lstMedias = from m in lstMedias
where m.Name.StartsWith(startsWith.Trim()) && m.MediaGenres.Contains(genre)
select m;
}
l.AddRange(lstMedias.Select(x => new new Wrapper.SuchWrapper { ID = m.ID, Data = m, Suchtyp = Enums.SUCHTYP.MEDIA }).ToList());
oder so noch kurzer
if (medias)
{
var qMedia = from m in context.Medias
where m.Name.StartsWith(startsWith.Trim())
&& m.MediaGenres.Where(x => lstGenres.Contains(x)).Count() == lstGenres.Count
select new Wrapper.SuchWrapper { ID = m.ID, Data = m, Suchtyp = Enums.SUCHTYP.MEDIA };
l.AddRange(qMedia);
}
@Maruu: Probier mal mit dem
Regex regex = new Regex("^(FBA-)*(.*)$");
foreach (string temp in @"12345
FBA-12345
FBA-FBA-12345
FBA-FBA-FBA-12345
FBA-F-12345
FBA-45678
FBA-FBA-ABC12345
ABCDE".Split(Environment.NewLine.ToCharArray(), StringSplitOptions.RemoveEmptyEntries))
{
foreach (Match match in regex.Matches(temp))
{
Console.WriteLine(match.Groups[match.Groups.Count - 1].Value.ToString());
}
}
Console.ReadLine();
Edited: Regex verbessern damit Empty-String nicht in Matches steht
@Refresher: Meine einfache Localizationklass sieht so aus. Ich hoffe es hilft dir weiter
public sealed class Localization
{
private static ResourceManager resMgr;
public static string LANGID = "en-GB";
public static void UpdateLanguage()
{
try
{
//Set Language
Thread.CurrentThread.CurrentUICulture = new CultureInfo(LANGID);
// Init ResourceManager
resMgr = new ResourceManager("YourNamespace.ResStrings", Assembly.GetExecutingAssembly());
}
catch (Exception ex)
{
throw ex;
}
}
public static string GetString(String pattern)
{
return resMgr.GetString(pattern);
}
}
wobei ResStrings.resx ist dein default Sprache und z.B. für Deutsch sollt die Datei ResStrings.de-DE.resx heißen.
Localization.LANGID = "de-DE";
Localization.UpdateLanguage();
txtName.Text = Localization.GetString("NAME");
Bei mir alle .resx datei als "Eingebettete Ressource" markiert. Was hast du bei dir?
@AlexDozer: Du must die Events PreviewDragEnter, PreviewDragOver, PreviewDrop durch Trigger behandeln. Ein Beispiel sieht so aus C#, Tools – Video Converter with ffmpeg
Wenn du nur ein spezielles Fax Gerät hast, kannst du mit SendMessage oder mit UIAutomation die Faxnummer in FaxDialog setzten. z.b. C# – Send data to other application
@tofu: Ich denke mal du kannst einfach ein kleines Programm schreiben um die Verbindung mit der Datenbank aufzubauen in try{} catch{} Dann schauen welche Fehler rausgespuckt wird wenn das Programm unter dem Rechner deines Kollegen läuft. Order du kannst immer mit SQL Management Studio probieren. Die Fehlermeldung von dem Programm ist sehr informativ.
@seller: Ich habe ein Beispiel fuer Firefox geschrieben. Vielleicht hilft dir http://rongchaua.net/blog/c-list-all-opened-tabs-of-firefox-with-uiautomation/
@Prof.P: Ich würde gern in eine Liste von string-Array einlesen. Ich nehme dein Code als Bsp (Ich habe kein VS dabei um Code zu validieren)
private static List<string[]> aVokabeln = new List<string[]>();
for (int i = 0; fileVokabeln.Peek() != -1; i++)
{
aVokabeln.Add(fileVokabeln.ReadLine().Split(';'));
}
@B3nj:
Insofern ich nur stdout und stderr weitergeleitet habe ging das auch soweit, halt ohne input.
Als ich aber den Input auch weitergeleitet habe ging stderr/stout nicht mehr? Seltsamerweise funktioniert das alles ohne Probleme bei der "cmd.exe".
Dann starten das Programm mit cmd.exe und In/Out/Error Kanal weiterleiten. Es sieht ungefähr so
cmdProc = new Process();
cmdProc.StartInfo.FileName = Environment.GetEnvironmentVariable("COMSPEC");
cmdProc.StartInfo.RedirectStandardInput = true;
cmdProc.StartInfo.RedirectStandardOutput = true;
cmdProc.StartInfo.RedirectStandardError = true;
//bla..bla....
System.IO.StreamWriter myWriter;
myWriter = cmdProc.StandardInput;
myWriter.AutoFlush = true;
myWriter.WriteLine("ipconfig.exe /all"); //Hier soll das Programm mit Parameters
myWriter.Close();
//bla...bla...
Ich habe nur ein asynchrones Beispiel C# – Read console output asynchronously . Vielleicht hilft es dir.
Sorry ich habe dich vorher nicht ganz verstanden. Für dein Problem, du kannst ein DependencyProperty an Text-Property von RichTextBox angehängen. Auf OnTextChanged-Event filterst du die URL und fügst den URL noch mal als Hyperlink ein.
Ich ein habe ganz groben Code hier. Du musst es natürlich verbessern. Der Code ist nur um den Konzept zu zeigen.
<Grid x:Name="LayoutRoot">
<StackPanel>
<TextBox x:Name="TextWithUrl"/>
<RichTextBox IsDocumentEnabled="True" Height="218" local:RTBNavigationService.Content="{Binding Text, ElementName=TextWithUrl}">
</RichTextBox>
</StackPanel>
</Grid>
public static class RTBNavigationService
{
private static readonly Regex regexUrl = new Regex(@"(?#Protocol)(?:(?:ht|f)tp(?:s?)\:\/\/|~/|/)?(?#Username:Password)(?:\w+:\w+@)?(?#Subdomains)(?:(?:[-\w]+\.)+(?#TopLevel Domains)(?:com|org|net|gov|mil|biz|info|mobi|name|aero|jobs|museum|travel|[a-z]{2}))(?#Port)(?::[\d]{1,5})?(?#Directories)(?:(?:(?:/(?:[-\w~!$+|.,=]|%[a-f\d]{2})+)+|/)+|\?|#)?(?#Query)(?:(?:\?(?:[-\w~!$+|.,*:]|%[a-f\d{2}])+=(?:[-\w~!$+|.,*:=]|%[a-f\d]{2})*)(?:&(?:[-\w~!$+|.,*:]|%[a-f\d{2}])+=(?:[-\w~!$+|.,*:=]|%[a-f\d]{2})*)*)*(?#Anchor)(?:#(?:[-\w~!$+|.,*:=]|%[a-f\d]{2})*)?");
public static readonly DependencyProperty ContentProperty = DependencyProperty.RegisterAttached(
"Content",
typeof(string),
typeof(RTBNavigationService),
new PropertyMetadata(null, OnContentChanged)
);
public static string GetContent(DependencyObject d)
{ return d.GetValue(ContentProperty) as string; }
public static void SetContent(DependencyObject d, string value)
{ d.SetValue(ContentProperty, value); }
private static void OnContentChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
var richTextBox = d as RichTextBox;
if (richTextBox == null)
return;
richTextBox.Document.Blocks.Clear();
var newContent = (string)e.NewValue;
if (string.IsNullOrEmpty(newContent))
return;
int lastPos = 0;
foreach (Match match in regexUrl.Matches(newContent))
{
if (match.Index != lastPos)
{
richTextBox.AppendText(newContent.Substring(lastPos, match.Index - lastPos));
}
var link = new Hyperlink(new Run(match.Value))
{
NavigateUri = new Uri(match.Value)
};
link.Click += OnUrlClick;
Paragraph para = new Paragraph();
para.Inlines.Add(link);
richTextBox.Document.Blocks.Add(para);
lastPos = match.Index + match.Length;
}
if (lastPos < newContent.Length)
richTextBox.AppendText(newContent.Substring(lastPos));
}
private static void OnUrlClick(object sender, RoutedEventArgs e)
{
var link = (Hyperlink)sender;
Process.Start(link.NavigateUri.AbsoluteUri);
}
}
@Pioneer: Es geht nicht wenn du ProcessInfo von 64 bit Process in einer 32 bit Anwendung kriegen möchtest. Versuche mal mit Win API order WMI oder kompiliere dein Program auf "64 bit / Any CPU" . Dies Link hilft dir vielleicht.
C# Get Path/Filename by Handle (hWnd) 32 and 64bit
Issue with class Process class in 64bit
und hier (Problembeschreibung)
<RichTextBox>
<FlowDocument>
<Paragraph>
<Hyperlink NavigateUri="http://rongchaua.net" RequestNavigate="Hyperlink_RequestNavigate" >Rongchaua's Blog</Hyperlink>
</Paragraph>
</FlowDocument>
</RichTextBox>
private void Hyperlink_RequestNavigate(object sender, System.Windows.Navigation.RequestNavigateEventArgs e)
{
Process.Start((sender as Hyperlink).NavigateUri.AbsoluteUri);
}
Oder hast du anders Problem?
@Sebastian1989101:
Wenn du RichTextBox unter normalen Window hostest,
Wenn du RichTextBox unter NavigationWindow hostest,
Google gibt schon viele Antworte für deine Frage. Such mal mit "wpf richtextbox hyperlink".
@GaHero: UDP ist ein "unreliable" protocol. Du musst für den Buffer verantwortlich sein dass er groß genug für Datagram ist. Sonst gehen die Daten verloren. Es gibt kein ähnliches Beispiel für UDP von den obenen Links. Daher macht einen großen Buffer, der für alle Datagrams passt.
@GaHero:
Der Buffer von Socket.BeginReceiveFrom ist wie nur "Zwischenablage" wenn du Data einliest. Diese Buffers werden dann in eine komplette Nachricht zusammengesetzt. Um die asynchrone Nachricht richtig aufzubauen brauchst du natürlich seine Größe oder ein Endzeichen (definiert in deinem Protokoll)
Hier ist ein gutes Beispiel für dich wo das Endzeichen als <EOF> definiert wurde.
Asynchronous Server Socket Example (Server)
Asynchronous Client Socket Example (Client)
@GstaGsta: Genau das Problem habe ich auch vorher. Ich nutze Telerik Components und wenn ich Telerik Components auf meinem Rechner deinstalliere, d.h. ich habe nur noch die Referenzen auf DLLs. Dann geht VS Designer nicht mehr mit dem Telerik Components. Ich kann nicht mehr im Designer die Components editieren.
Lösung: Ich muss Telerik Components noch mal (durch Setup Files) installieren. Für deinen Fall denke ich dass du auch Setup-Package von Dev Component bei deinem Rechner zu Hause laufen lässt.
@Aendrew: Wenn du das Certificate Request an den Root CA schickst, generiert er für dich eine Zertifikate wie unten
openssl x509 -req -sha256 -CAcreateserial -in RCA.csr -days 365 -CA RootCA.cert -CAkey RootCA.key -out RCA.cert
Hiermit definiert der Root CA dass deine Zertifikate mit SHA256 angewendet werden kann. Du bekommst dann zurück deine Zertifkate-Datei (in diesem Beispiel ist RCA.cert). Wenn du deine Private Key mit der Zertifkate einbindest, musst du explicit mit den richtigen CSP (PROV_RVA_AES) einbinden
openssl pkcs12 -export -in RCA.cert -inkey RCA.key -CSP "Microsoft Enhanced RSA and AES Cryptographic Provider" -out RCA.p12
Du kannst aber auch den Inhalt der Zertifikate anschauen um zu prüfen ob es richtig war
openssl pkcs12 -info -nodes -in RCA.p12
oder
openssl x509 -in RCA.cert -text -noout
Daher schaust erstmal ob deine Zertifikate SHA256 unterstutzt und dann den Root CA kontaktieren.
@Aendrew:
Deine Zertifikate muss mit "Microsoft Enhanced RSA and AES Cryptographic Provider" generiert werden um SHA256 als Hash Algorithmus zu nutzen. Z.B. erstelle ich eine Zertifikate mit openssl wie folgenden um SHA256 zu unterstützen.
openssl pkcs12 -export -in RCA.cert -inkey RCA.key -CSP "Microsoft Enhanced RSA and AES Cryptographic Provider" -out RCA.p12
Fragt dein CSP ob Sie SHA256 unterstüzen und für dich neue Zertifikate generieren.