Hallo an alle,
Ich stehe vor dem Problem, prüfen zu müssen ob in einem Notebook eine "normale" Festplatte oder eine SSD eingebaut ist.
Über WMI bekomme ich ja alle möglichen Informationen über das Teil, aber keine, aus denen ich entnehmen könnte um was für einen Festplattentyp es sich handelt.
Externe Tools schaffen dies ja auch.
Ein Lösungsansatz wäre ja z.B. die Rotationsgeschwindigkeit zu ermitteln. Bei SSD´s sollte diese ja im Idealfall 0 sein. 🙂
Das Problem ist nur, dass ich keinerlei Ahnung, und auch nichts gefunden habe wie ich diese ermitteln kann.
Vielleicht kann mir jemand ein par Tipps oder eventuell auch andere Lösungsansätze geben.
Gibt es eventuell eine Möglichkeit über win32??
mfG A. Spindler
Glaubst du wirklich ich hätte hier was gepostet wenn ich deinen Vorschlag noch nicht getestet hätte???
Es ist davon auszugehen, dass du das nicht getestet hast. Erstes Ergebnis, ein bisschen lesen und tadaaa:
Tell whether SSD or not in C# (inkl. Codebeispiel)
Hi Ali_Spindler,
ich hab auch gleich unter den ersten beiden Ergebnissen eine Lösung gefunden. Wenn dir das nicht weitergeholfen hat, mußt du schon ein paar mehr Worte darüber verlieren...
Christian
Weeks of programming can save you hours of planning
Doch, davon ist auszugehen.
Den Code hab ich bereits getestet, nur leider bekomme auf unterschiedlichen Rechnern mit unterschiedlichen Platten als Ergebnis immer nur dass ich keine SSD´s hätte, was definitiv nicht stimmt.
Und ja, da bin ich mir zu 100% sicher.
mfG
Die sicherste und einfachste möglichkeit die mir einfällt wäre eine Datei zu schreiben und zu lesen und die geschwindigkeit davon zu ermitteln das erzeugt zwar unnötige schreib und lese vorgänge dafür wärst du aber ziemlich sicher das es eine SSD ist.
alternativ hab ich noch folgenden Code gefunden bei google aber dieser funktioniert wohl nicht bei allen SSD´s aber bei den meisten.
static bool DriveIsSSD(string drive_letter)
{
foreach (ManagementObject obj in new ManagementObjectSearcher("SELECT * FROM Win32_DiskDrive").Get())
{
if(obj["PNPDeviceID"].ToString().Contains("SSD"))
{
foreach (ManagementObject partition in obj.GetRelated("Win32_DiskPartition"))
foreach (ManagementObject drive in partition.GetRelated("Win32_LogicalDisk"))
if (drive["Name"].ToString().StartsWith(drive_letter))
return true;
}
}
return false;
}
Real programmers don't comment their code - it was hard to write, it should be hard to understand.
Wärs nich schlauer den Rotation Speed auszulesen? Der müsste bei einer SSD immer 0rpm sein.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Wärs nich schlauer den Rotation Speed auszulesen? Der müsste bei einer SSD immer 0rpm sein.
Darauf basieren die Ansätze, die man per Google finden kann. Wo dabei aber das Problem liegt, verrät uns der OP ja leider nicht...
Christian
Weeks of programming can save you hours of planning
Mein Problem ist eigentlich ganz einfach.
Um es mal so zu sagen, ich hab keine Ahnung wie ich den Rotation Speed auslesen kann...
mfG
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Leider gibt´s in den Links bei google keinerlei Informationen wie man mit c# an die Drehzahl herankommt.
Es ist zwar Problemlos möglich die SMART-Daten auszulesen, nur ist die Drehzahl darin nicht enthalten.
mfG
Hast Du keine Lust selbst was zu machen, oder fehlen Dir die Grundlagen?
Geschweige denn davon, dass dort 1:1 steht, wie das funktioniert - und zwar nicht nur in dem von mir genannten Link.
Es sieht also so aus, als ob Du erwartest, dass wir das für Dich machen - das ist nicht drin. Offensichtlich hast Du auch nur den ersten Link angeklickt, statt Dir das Suchergebnis anzuschauen - ansonsten hättest Du folgenden fertigen Code gefunden: Tell whether SSD or not in C#
Ingesamt hast Du nun mehr als genug Treffer, wie man relativ sicher herausfinden kann, ob es sich um eine SSD handelt oder nicht. Selbst Windows 7 geht nicht anders vor als in dem hier verwiesenen Link.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Danke für deine überaus freundliche Antwort.
hättest du die Posts mitverfolgt, wüsstest du sicherlich, dass ich zu diesm Codeschnipsel bereits eine Antwort gegeben habe.
Ich erwarte keineswegs etwas fertiges. Aber dauernd auf google zu verweisen ist auch nicht wirklich hilfreich.
Die Aussagen in diesem Thread laufen alle auf das selbe hinaus --> Googlen.
Deiner letzten Antwort entnehme ich daher, dass du über dieses Thema auch nicht viel mehr weisst als ich,
Schönen Tag,
Ali
Ich erwarte keineswegs etwas fertiges. Aber dauernd auf google zu verweisen ist auch nicht wirklich hilfreich.
Die Aussagen in diesem Thread laufen alle auf das selbe hinaus --> Googlen.
Genau. Und außer dir sind alle Beteiligten auch fündig geworden. Die Varianten, die man bei Google findet, basieren auf der Rotationsgeschwindigkeit. Und du sagtest, du hast dir die Implementierungen angeschaut.
Jetzt sagst du:
Um es mal so zu sagen, ich hab keine Ahnung wie ich den Rotation Speed auslesen kann...
Keine Ahnung ist keine Problembeschreibung.
Du verstößt so ungefähr gegen jeden Punkt in [Hinweis] Wie poste ich richtig?, so daß ich mir eine Auflistung mal spare.
Christian
Weeks of programming can save you hours of planning
Da hast du natürlich völlig recht,
die Antworten bei google basieren alle auf dem Rotation Speed. Aber nenn mir doch bitte mal einen Link wie ich den eigentlichen Rotation Speed auslesen kann.
Wie gesagt, bei den SMART-Eigenschaften ist dieser nicht enthalten und ich hab noch keinen brauchbaren Ansatz gefunden einen plausiblen Wert zu erhalten.
mfG
Es wurde Dir nun mehrfach der Link gegeben, wie das funktioniert - sogar fertiger Source Code einer externen Seite.
Wenn Du keine Lust hast selbst was zu machen ist das Dein Ding.
Nun ist gut und hier zu.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code