C # - Festlegen von Verzeichnisberechtigungen für alle Benutzer in Windows 7

8

Das sollte ein ziemlich einfaches Problem sein, aber aus irgendeinem Grund kann ich das anscheinend nicht zum Laufen bringen. Ich möchte nur die Berechtigungen für ein bestimmtes Verzeichnis festlegen, um den vollen Zugriff für alle Benutzer zu ermöglichen. Hier ist der Code, den ich bisher habe:

%Vor%

Es werden keine Ausnahmen ausgelöst, aber auch nichts passiert. Wenn ich die Verzeichnisberechtigungen nach dem Ausführen des Codes überprüfe, sehe ich keine Änderungen.

Irgendwelche Ideen?

Vielen Dank im Voraus,
Sonny

    
Sonny Boy 20.01.2012, 16:39
quelle

2 Antworten

25

Sie müssen auch SetAccessControl aufrufen, um die Anwendung anzuwenden Änderungen.

%Vor%

Es scheint, dass die Beispiele auf MSDN im Detail fehlen, wie diskutiert hier . Ich habe den Code aus diesem Artikel gehackt, um folgendes zu erhalten, das sich gut verhält:

%Vor%     
David Heffernan 20.01.2012, 18:37
quelle
6

Die Antwort von David Heffernan funktioniert nicht auf einer nicht-englischen Maschine, bei der der Versuch, die Berechtigungen für "Benutzer" festzulegen, mit einer IdentityNotMapped -Ausnahme fehlschlägt. Der folgende Code funktioniert überall, indem Sie stattdessen WellKnownSidType.BuiltinUsersSid verwenden:

%Vor%     
Timothée Lecomte 17.02.2016 16:04
quelle

Tags und Links

Django: Verwenden von Annotate, Count und Distinct in einem Queryset ___ qstntxt ___

Ich bin Anfänger in Java und erstelle gerade ein Kartenspiel wie Gin Rommé für Android. Ich möchte wissen, was die beste Implementierung für die Erstellung der Handklasse ist? Wie kann man die von Deck.dealt () zurückgegebene Karte am besten speichern?

  1. Array
  2. ArrayList
  3. Vektor
  4. HashSet
  5. VerknüpfteListe

Außerdem würde ich mich freuen, wenn jemand einen Gin Rommé Open-Source-Link zur Verfügung stellen könnte.

    
___ answer9128558 ___

Ich denke, eine gute Idee wäre, eine Schnittstelle zu verwenden (Liste, wenn Elemente geordnet sind, oder Setzen, wenn Elemente nicht geordnet sind. Sie können die gewünschte Implementierung verwenden, zum Beispiel:

%Vor%

oder

%Vor%     
___ answer9128716 ___

Speichern Sie sie in %code% .

Karten in einer Hand sind in einer bestimmten Reihenfolge, nicht in einem ungeordneten Haufen. Diese Reihenfolge wird in %code% über %code% beibehalten.

%code% gibt Ihnen auch die Möglichkeit, eine bestimmte Karte nach Index auszuwählen, was bei der Implementierung des Spiels hilfreich ist.

Beachten Sie, dass Sie diese Datenstruktur jederzeit problemlos ändern können, solange Sie Ihre %code% -Klasse ordnungsgemäß erstellen. Solange Sie dies bei jeder von Ihnen entworfenen Klasse berücksichtigen, können Sie sie jederzeit ändern, wenn Sie merken, dass Sie etwas anderes brauchen.

    
___ answer9128718 ___

Nun, ein %code% ist schneller (soweit ich weiß), aber wenn du ein Kartenspiel machen willst, dann wirst du vielleicht die Karten sortieren wollen. Deshalb würde ich vorschlagen, eine Liste zu verwenden. Wenn Sie ein Anfänger sind, dann wäre vielleicht das Beste, ein %code% zu verwenden. Es ist einfach zu bedienen und zu verstehen. Zumindest würde ich das tun. Wenn Sie mehr erfahren möchten, empfehle ich, über die einzigartigen Eigenschaften jedes einzelnen zu lesen, damit Sie selbst entscheiden können. Und ja, wie Greuze schon sagte, sollten Sie eine Schnittstelle für mehr Flexibilität verwenden.

    
___ answer9128842 ___

Erstens wird von der Verwendung von Vector in den neuesten Versionen von Java abgeraten, so dass Sie diese wahrscheinlich ignorieren können.

Zweitens, wie Sie wissen werden, wenn Sie das Javadoc auf diesen restlichen Klassen lesen, haben sie alle Vorteile oder Nachteile. Manche haben eine Bestellung, manche können doppelte Werte annehmen, manche nicht und so weiter. Daher denke ich, der beste Ansatz ist es, einen Pseudo-Code für Ihre Anwendung zu schreiben, der nicht auf einer bestimmten Klasse basiert (schreiben Sie einfach Dinge wie "Karte zu Hand hinzufügen", "Karte aus der Hand entfernen"). Sobald Sie etwas von diesem Pseudo-Code haben, werden Sie in der Lage sein, Ihre Anforderungen klarer zu sehen; Wollen Sie die Karten in einer bestimmten Reihenfolge in der Hand behalten? Willst du Karten mit einem Schlüssel aus der Hand holen?

Dann wird Ihre Wahl klarer sein.

    
___ tag123java ___ Java (nicht zu verwechseln mit JavaScript oder JScript oder JS) ist eine universelle objektorientierte Programmiersprache, die für die Verwendung in Verbindung mit der Java Virtual Machine (JVM) entwickelt wurde. "Java-Plattform" ist der Name für ein Computersystem, auf dem Tools zum Entwickeln und Ausführen von Java-Programmen installiert sind. Verwenden Sie dieses Tag für Fragen, die sich auf die Java-Programmiersprache oder Java-Plattform-Tools beziehen. ___ answer9131074 ___

Es ist sinnvoll, das Deck in einer Liste zu behalten, da es die Reihenfolge aufrechterhält. Ich verwende standardmäßig Lists.newArrayList (), um eine Liste zu erstellen. Listen ist ein Teil von Guava. Ich empfehle sehr, Guava zu verwenden und kennen zu lernen, da es viele nützliche Angebote hat.

Es wäre sinnvoll, die Hand in einer leicht sortierbaren Datenstruktur zu halten, um den Vergleich der Hände zu erleichtern. OTOH, IIRC, Gin Rummy Hände sind nicht allzu groß.

    
___ tag123arrays ___ Ein Array ist eine geordnete Datenstruktur, die aus einer Sammlung von Elementen (Werten oder Variablen) besteht, die jeweils durch einen oder mehrere Indizes identifiziert werden. Wenn Sie nach bestimmten Varianten von Arrays fragen, verwenden Sie stattdessen diese verwandten Tags: [Vektor], [Arraylist], [Matrix]. Wenn Sie dieses Tag verwenden, markieren Sie die Frage auch mit der verwendeten Programmiersprache, es sei denn, Ihre Frage bezieht sich nicht auf eine bestimmte Programmiersprache. ___ tag123collections ___ Auflistungs-APIs stellen Entwicklern eine Reihe von Klassen und Schnittstellen zur Verfügung, die die Verarbeitung von Objektgruppen vereinfachen. ___ tag123datastrukturen ___ Eine Datenstruktur ist eine Möglichkeit, Daten so zu organisieren, dass bestimmte Eigenschaften dieser Daten effizient abgefragt und / oder aktualisiert werden können. ___ answer9130840 ___

Wenn Sie die Nuancen zwischen den Sammlungsarten wirklich verstehen wollen, gehen Sie hier.

%code% ist technisch nicht angemessen, außer wenn das Spiel Bohnanza ist (was, ähm, ist einer der größte Kartenspiele aller Zeiten, aber ich lasse mich fertig machen).

%code% sagt unter anderem, dass eine Hand, die das Ass und den König der Vereine enthält, und eine andere Hand, die den König und das Kreuz enthält, grundsätzlich nicht dieselbe Hand sind. Das ist eine viel stärkere Abhängigkeit von der Ordnung als einfach "Nun, ich möchte mich an die Reihenfolge erinnern, in der der Benutzer seine Karten sehen möchte", was eine Eigenschaft ist, die Tonnen von Nicht-Listen-Sammlungen haben, wie %code% und Guavas %code% .

%code% impliziert auch, dass der Karte im Index N eine besondere Bedeutung beigemessen wird. Dies gilt für kein Kartenspiel, das ich kenne.

%code% ist im Allgemeinen nicht für Kartenspiele geeignet - nur für diejenigen, die ein einziges Kartenspiel mit völlig einzigartigen Karten verwenden.

Um Duplikate zu erlauben, aber trotzdem eine gruppenunabhängige Gleichheit zu haben, ist der zu verwendende Typ Guavas %code% . Zum Beispiel %code% oder %code% . Beachten Sie, dass die meisten Multiset-Implementierungen mehrere "gleiche" Karten darstellen, indem Sie nur die Karte und eine Zählung speichern. Wenn Sie über sie iterieren, müssen Duplikate einer Karte, die Sie auf der Hand haben, immer zusammen erscheinen. Wenn es wichtig ist, dass der Benutzer die Reihenfolge der Karten in seiner Hand frei steuern kann, benötigen Sie %code% .

Jetzt ist die Unterrichtszeit vorbei ... nun, seien wir ehrlich. % Co_de% aufzurufen, oder eine ganze Hand als Schlüssel in %code% zu verwenden, ist nicht wirklich was du jemals tun wirst ... also mach weiter und benutze %code% , du Mir geht es gut. : -)

    
___