myCSharp.de - DIE C# und .NET Community
Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 
 | Suche | FAQ

» Hauptmenü
myCSharp.de
» Startseite
» Forum
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Suche
» Regeln
» Wie poste ich richtig?
» Forum-FAQ

Mitglieder
» Liste / Suche
» Wer ist wo online?

Ressourcen
» openbook: Visual C#
» openbook: OO
» Microsoft Docs

Team
» Kontakt
» Übersicht
» Wir über uns

» myCSharp.de Diskussionsforum
Du befindest Dich hier: Community-Index » Diskussionsforum » Entwicklung » Netzwerktechnologien » Freigabe Rechte auslesen
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | Thema zu Favoriten hinzufügen

Antwort erstellen
Zum Ende der Seite springen  

Freigabe Rechte auslesen

 
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
tt556789900
myCSharp.de-Mitglied

Dabei seit: 16.06.2008
Beiträge: 33


tt556789900 ist offline

Freigabe Rechte auslesen

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo zusammen,

ich möchte von einer lokalen Freigabe die Rechte ausgeben. Hab aber damit meine Probleme. Da ich im Internet zu Win32_Share fast nur C++ Beispiele finde, weiss ich leider nicht, ob meine Übergabeparameter stimmen. Kann auch sein das ich einen völlig falschen Ansatz betreibe....

C#-Code:
        public void machwasdummes(string share, string name)
        {
            ManagementClass mc = new ManagementClass("Win32_Share");

            int type = 0;
            object result = 0;
            try
            {
                result = mc.InvokeMethod("GetAccessMask", new Object[] { share, name, type });
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            Console.WriteLine(result.ToString());
            Console.Read();
        }

Vorab schon einmal danke.
01.10.2009 15:10 Beiträge des Benutzers | zu Buddylist hinzufügen
Tom Tom ist männlich
myCSharp.de-Mitglied

Dabei seit: 16.06.2006
Beiträge: 430
Entwicklungsumgebung: SSMS
Herkunft: Home is where my notebook is


Tom ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo Durrahan,

hier kannst du nachschauen wie es geht:  http://dotnet-snippets.de/dns/freigaben-...hen-SID642.aspx

Gruß,
Tom
01.10.2009 15:14 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
tt556789900
myCSharp.de-Mitglied

Dabei seit: 16.06.2008
Beiträge: 33

Themenstarter Thema begonnen von tt556789900

tt556789900 ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Danke, hat mir geholfen.
07.10.2009 11:30 Beiträge des Benutzers | zu Buddylist hinzufügen
Zwischen diesen beiden Beiträgen liegt mehr als ein Monat.
tt556789900
myCSharp.de-Mitglied

Dabei seit: 16.06.2008
Beiträge: 33

Themenstarter Thema begonnen von tt556789900

tt556789900 ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Es funktioniert leider doch nicht...

ich hab mir mal das Codebeispiel aus dem Link zur Brust genommen und hab mir die Properties von dem ManagementObject share aufgelistet und da gibts eine Property mit dem Namen "AccessMask" Nur leider gibt die immer eine Nullexception aus, wird also nie gesetzt.

Dann hab ich mal weiter im Inet gestöbert und bin auf den Forumsbeitrag gestoßen:
 http://social.msdn.microsoft.com/Forums/...cc-41f2ec0fa0bf

Hier habe ich genau das Problem was der letzte Post von dem Thread auch aussagt, ich bekomme immer 0 zurück als Permission.

Kann mir da jemand weiterhelfen?

[Edit]Es scheint als würden alle an dem gleichen Problem hängen bleiben und keine Antwort finden:  http://social.microsoft.com/Forums/en-US...5b-fb21728a52de[/Edit]

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von tt556789900 am 17.11.2009 08:41.

17.11.2009 08:12 Beiträge des Benutzers | zu Buddylist hinzufügen
Tom Tom ist männlich
myCSharp.de-Mitglied

Dabei seit: 16.06.2006
Beiträge: 430
Entwicklungsumgebung: SSMS
Herkunft: Home is where my notebook is


Tom ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hi Durrahan,

hast du dir mal  Win32_Share angeschaut?
Da heisst es das AccessMask obsolete ist und nur unter Windows NT 4.0 und Windows Me/98/95 etwas zurückliefert.

Probier mal die Methode GetAccessMask wie in den Community Beispielen angegeben.

Gruß,
Tom
17.11.2009 12:37 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
tt556789900
myCSharp.de-Mitglied

Dabei seit: 16.06.2008
Beiträge: 33

Themenstarter Thema begonnen von tt556789900

tt556789900 ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hab ich leider auch schon ausprobiert, da es leider nicht in dem Properties aufgelistet wird bringt es wie erwartet ein die ManagementException -> Nicht gefunden.

Hier die Auflistung der Properties:
[0] = "AccessMask"
[1] = "AllowMaximum"
[2] = "Caption"
[3] = "Description"
[4] = "InstallDate"
[5] = "MaximumAllowed"
[6] = "Name"
[7] = "Path"
[8] = "Status"
[9] = "Type"

Was ich auch noch komisch find, laut msdn bekommt man ja eine Zahl zurück, die angibt, was für ein Recht man darauf besitzt.

So, aber da es nur eine Zahl ist, kann es wohl schlecht eine Auflistung von Berechtigungen sein, da ja vll mehrere User drauf Zugriff haben, gibt der Wert nur der eigene Zugriff zurück?
17.11.2009 15:54 Beiträge des Benutzers | zu Buddylist hinzufügen
Tom Tom ist männlich
myCSharp.de-Mitglied

Dabei seit: 16.06.2006
Beiträge: 430
Entwicklungsumgebung: SSMS
Herkunft: Home is where my notebook is


Tom ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Das ist auch kein Property sondern eine Methode.

nutze einfach InvokeMethod("GetAccessMask", null).

Und was du genau zurück bekommst, solltest du aus der  MSDN: GetAccessMask auslesen können.

Gruß,
Tom
17.11.2009 16:17 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
tt556789900
myCSharp.de-Mitglied

Dabei seit: 16.06.2008
Beiträge: 33

Themenstarter Thema begonnen von tt556789900

tt556789900 ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

So hat nun endlich funktioniert...
ich poste gleich noch meine Lösung.

[Edit]

Hier der volle Codesnippet:
 http://dotnet-snippets.de/dns/freigaben-...hen-SID642.aspx

Hab den Code jediglich um die Abfrage von GetAccessMask erweitert. Der Rückgabewert ist das Zugriffsrecht des daraufzugreifenden Users, zb greife ich auf den Share eines anderen Rechners zu und bekomme für meinen User das Zugriffsrecht.

C#-Code:
ShareLister lister = new ShareLister();
List<ManagementObject> shares = lister.ListShares("PCName", "PCName" + @"\Administrator", "Passwort);
foreach (ManagementObject share in shares)
{
    Console.WriteLine(share["name"].ToString());
    object result = 0;
    try
    {
        result = share.InvokeMethod("GetAccessMask",null);
    }
    catch (Exception ex)
    {
        Console.WriteLine(ex.Message);
    }
    Console.WriteLine(result.ToString());
}

C#-Code:
    class ShareLister
    {
        public List<ManagementObject> ListShares(string computername, string username, string password)
        {
            List<ManagementObject> Shares = new List<ManagementObject>();
            if (computername != string.Empty)
            {
                ManagementScope managementScope1 = new ManagementScope((@"\\" + computername + @"\root\cimv2"));
                managementScope1.Options.Username = username;
                managementScope1.Options.Password = password;
                managementScope1.Options.EnablePrivileges = true;
                ObjectQuery objectQuery1 = new ObjectQuery("SELECT * FROM Win32_Share");
                ManagementObjectSearcher managementObjectSearcher1 = new ManagementObjectSearcher(managementScope1, objectQuery1);
                using (ManagementObjectCollection.ManagementObjectEnumerator managementObjectEnumerator1 =
                        managementObjectSearcher1.Get().GetEnumerator())
                {
                    while (managementObjectEnumerator1.MoveNext())
                    {
                        ManagementObject managementObject1 = ((ManagementObject)managementObjectEnumerator1.Current);
                        Shares.Add(managementObject1);
                    }
                }
            }
            return Shares;
        }

        public bool RemoveShare(ManagementObject shareToRemove)
        {
            try
            {
                shareToRemove.InvokeMethod("Delete", new object[] { shareToRemove.Path.ToString() });
                return true;
            }
            catch
            {
                return false;
            }
        }
    }

Häufig benutze Rückgabewerte:
2032127 Full Control
1245631 Change
1179817 Read

[/Edit]

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von tt556789900 am 18.11.2009 08:49.

18.11.2009 08:37 Beiträge des Benutzers | zu Buddylist hinzufügen
Baumstruktur | Brettstruktur       | Top 
myCSharp.de | Forum Der Startbeitrag ist älter als 10 Jahre.
Der letzte Beitrag ist älter als 10 Jahre.
Antwort erstellen


© Copyright 2003-2020 myCSharp.de-Team | Impressum | Datenschutz | Alle Rechte vorbehalten. | Dieses Portal verwendet zum korrekten Betrieb Cookies. 21.01.2020 20:52