Freigeben anzeigen ( Mathe)

  • Hallo ich habe in ein Admintool eine Funktion zum Setzen und auslesen
    Sichtbarer/Gesperrter Laufwerke geschrieben.

    So es hagt nun beim anzeigen der gesetzten Werte (Ich lasse diese durch Checkboxen anzeigen die Standartmäßig gesetzt sind)

    So ich bin un schon soweit:
    Es gibt den Maximalwert 67108863

    Dann lese ich mit RegRead den aktuell gesetzten Wert aus.
    In diesem Beispiel 66977789

    Dann ziehe ich sie voneinander ab.

    67108863 - 66977789 = 131074

    Das sieht in Autoit wie folgt aus

    [autoit]

    $max = 67108863
    $aktuell = RegRead('HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer', 'NoDrives')
    $rest = $max - $aktuell

    [/autoit]

    So da nun sich der übriggebliebene Wert aus verschiedenen Laufwerken zusammensietzt hänge ich nun

    Ich will diesen wert so auflösen das
    $rest nachher = 0 ist und ich weiß wlche werte abgezogen wurden z.b so:

    131074 = 131072(R) - 2(B)

    Aber es kann nun auch sein das sich der wert aus 3 oder 10 werten zusammen setzt x.x

    Help... Please X(

  • Also ....
    Ich habe eine GUI wo man die einem Benutzer im netzwerk sagen kann welche Laufwerke sehen kann.. das kann man in die Registry eintragen

    z.B.
    A ist 1
    B ist 2
    C ist 4
    D ist 8
    ....

    Dabei hat jeder Laufwerksbuchstabe eine Checktbox die einem Wertzugeteilt ist nimmt man den hacken raus wird dieser Wert hinzuaddiert.


    So das zur vorgeschichte...

    Nun möchte ich das, wenn schon vorher Einstellungen getroffen wurden, er mir in der GUI anzeigt welche Laufwerke freigegeben wurden.

    Dazu muss ein Dezimalwert aus der Registry gelesen werden.

    Da sich dieser Wert aus verschiedenen Buchstabenwerten zusammen setzt

    z.b 6 ( 2 = B , 4 = C )

    ist es schwer zusagen welche Checkbox nun Unchecked gesetzt werden muss... Und mit welcher Formel

    • Offizieller Beitrag

    Hi,

    ahh jetzt verstehe ich:

    Spoiler anzeigen


    Werte der einzelnen Laufwerks Buchstaben:
    A: 1
    B: 2
    C: 4
    D: 8
    E: 16
    F: 32
    G: 64
    H: 128
    I: 256
    J: 512
    K: 1024
    L: 2048
    M: 4096
    N: 8192
    O: 16384
    P: 32768
    Q: 65536
    R: 131072
    S: 262144
    T: 524288
    U: 1048576
    V: 2097152
    W: 4194304
    X: 8388608
    Y: 16777216
    Z: 33554432
    Alle: 67108863

    Jetzt willst du immer gucken, was ist das größte was reinpaßt und dann entsprechend weiter um die Laufwerke zu bekommen.

    So long,

    Mega

  • ich habs soweit ^^

    Spoiler anzeigen
    [autoit]

    $reg_read_nodrives = RegRead('\\' & $read_user & '\HKU\' & $SID & '\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer', 'NoDrives')
    $xlc = 25
    For $i = 1 to 26
    If $reg_read_nodrives < $freigaben_dez[$xlc][1] Then
    MsgBox(0, 'Es ist', 'Checkted ' & $freigaben_dez[$xlc][1] & ' ' & $reg_read_nodrives)
    ElseIf $reg_read_nodrives = $freigaben_dez[$xlc][1] Then
    $reg_read_nodrives = $reg_read_nodrives - $freigaben_dez[$xlc][1]
    MsgBox(0, 'Es ist', 'Uncheckted')
    Else
    $reg_read_nodrives = $reg_read_nodrives - $freigaben_dez[$xlc][1]
    MsgBox(0, 'Es ist', 'Uncheckted')
    EndIf
    $xlc = $xlc - 1
    Next

    [/autoit]

    In den Arrays stehen die werte der Laufwerke.

  • ok wenn man weiß wie kann man es so auch machen XD

    Vielen Danke für eure Hilfe

    GELÖST!

    Einmal editiert, zuletzt von Aiden (26. Februar 2007 um 16:41)