Laden...

Prüfen ob Festplatte eine SSD ist...

Erstellt von Ali_Spindler vor 11 Jahren Letzter Beitrag vor 11 Jahren 8.856 Views
Thema geschlossen
A
Ali_Spindler Themenstarter:in
45 Beiträge seit 2011
vor 11 Jahren
Prüfen ob Festplatte eine SSD ist...

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

S
167 Beiträge seit 2008
vor 11 Jahren
A
Ali_Spindler Themenstarter:in
45 Beiträge seit 2011
vor 11 Jahren

Glaubst du wirklich ich hätte hier was gepostet wenn ich deinen Vorschlag noch nicht getestet hätte???

B
357 Beiträge seit 2010
vor 11 Jahren

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)

5.658 Beiträge seit 2006
vor 11 Jahren

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

A
Ali_Spindler Themenstarter:in
45 Beiträge seit 2011
vor 11 Jahren

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

C
168 Beiträge seit 2010
vor 11 Jahren

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.

16.835 Beiträge seit 2008
vor 11 Jahren

Wärs nich schlauer den Rotation Speed auszulesen? Der müsste bei einer SSD immer 0rpm sein.

5.658 Beiträge seit 2006
vor 11 Jahren

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

A
Ali_Spindler Themenstarter:in
45 Beiträge seit 2011
vor 11 Jahren

Mein Problem ist eigentlich ganz einfach.

Um es mal so zu sagen, ich hab keine Ahnung wie ich den Rotation Speed auslesen kann...

mfG

A
Ali_Spindler Themenstarter:in
45 Beiträge seit 2011
vor 11 Jahren

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

16.835 Beiträge seit 2008
vor 11 Jahren

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.

A
Ali_Spindler Themenstarter:in
45 Beiträge seit 2011
vor 11 Jahren

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

5.658 Beiträge seit 2006
vor 11 Jahren

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

A
Ali_Spindler Themenstarter:in
45 Beiträge seit 2011
vor 11 Jahren

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

16.835 Beiträge seit 2008
vor 11 Jahren

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.

Thema geschlossen