J'y arrive pas...

[Résolu]
Signaler
Messages postés
66
Date d'inscription
lundi 22 mai 2006
Statut
Membre
Dernière intervention
25 août 2009
-
Messages postés
66
Date d'inscription
lundi 22 mai 2006
Statut
Membre
Dernière intervention
25 août 2009
-
Bonjour,

Il n'y a que des exemples en c# en ce qui concerne les perm et quasiment rien en c++. Alors moi qui débute, je ne vous explique pas comment je galère...

Voilà j'essaie "tout simplement" de passer dans une variable le compte tout le monde comme ceci :

using namespace System;
using namespace System::IO;
using namespace System::Security::AccessControl;
using namespace System::Security::Principal;

void AddFileSecurity(String^ fileName, String^ account,
                        FileSystemRights rights, AccessControlType controlType)
{
   
    SecurityIdentifier^ tous = gcnew SecurityIdentifier(WellKnownSidType::WorldSid, null);

    FileSecurity^ fSecurity = File::GetAccessControl(fileName);

    fSecurity->AddAccessRule(gcnew FileSystemAccessRule
                                   (account,rights, controlType));

    File::SetAccessControl(fileName, fSecurity);
}

int main()
{
    try
    {
        String^ fileName = "test.txt";

        AddFileSecurity(fileName, tous,
            FileSystemRights::ExecuteFile, AccessControlType::Allow);

    }
    catch (Exception^ ex)
    {
        Console::WriteLine(ex->Message);
    }
}

mais ça ne marche pas...même en retirant null (que j'ai laissé pour bien faire comprendre mon niveau :))

4 réponses

Messages postés
2676
Date d'inscription
vendredi 28 juin 2002
Statut
Membre
Dernière intervention
13 janvier 2016
20
salut,

maintenant ca devrait marcher (c'était mon premier bout de code C++/CLI) :
#include "stdafx.h"
#include <vcclr.h>

using namespace System;
using namespace System::IO;
using namespace System::Security::AccessControl;
using namespace System::Security::Principal;

void AddFileSecurity(String^ fileName, SecurityIdentifier^ account,
                        FileSystemRights rights, AccessControlType controlType)
{
    FileSecurity^ fSecurity = File::GetAccessControl(fileName);

    fSecurity->AddAccessRule(gcnew FileSystemAccessRule
                                   (account,rights, controlType));

    File::SetAccessControl(fileName, fSecurity);
}

int main()
{
    try
    {
        String^ fileName = "test.txt";

        SecurityIdentifier^ tous = gcnew SecurityIdentifier(WellKnownSidType::WorldSid, nullptr);

        AddFileSecurity(fileName, tous,
            FileSystemRights::ExecuteFile, AccessControlType::Allow);

    }
    catch (Exception^ ex)
    {
        Console::WriteLine(ex->Message);
    }
}

ShareVB
Messages postés
2676
Date d'inscription
vendredi 28 juin 2002
Statut
Membre
Dernière intervention
13 janvier 2016
20
salut,

peut être :
using namespace System;
using namespace System::IO;
using namespace System::Security::AccessControl;
using namespace System::Security::Principal;

void AddFileSecurity(String^ fileName, SecurityIdentifier^ account,
                        FileSystemRights rights, AccessControlType controlType)
{
    FileSecurity^ fSecurity = File::GetAccessControl(fileName);

    fSecurity->AddAccessRule(gcnew FileSystemAccessRule
                                   (account,rights, controlType));

    File::SetAccessControl(fileName, fSecurity);
}

int main()
{
    try
    {
        String^ fileName = "test.txt";

        SecurityIdentifier^ tous = gcnew SecurityIdentifier(WellKnownSidType::WorldSid, null);

        AddFileSecurity(fileName, tous,
            FileSystemRights::ExecuteFile, AccessControlType::Allow);

    }
    catch (Exception^ ex)
    {
        Console::WriteLine(ex->Message);
    }
}

Je n'ai jamais compris l'intérêt de faire du C++/CLI par rapport à C# qui est nettement plus simple...

ShareVB
Messages postés
66
Date d'inscription
lundi 22 mai 2006
Statut
Membre
Dernière intervention
25 août 2009

Salut ShareVB,

ça passe de 2 à 34 erreurs comme ceci

Allez hop, migration vers du C#...en plus je ne connais pas Orcas, une bonne occase pour découvrir :).
Messages postés
66
Date d'inscription
lundi 22 mai 2006
Statut
Membre
Dernière intervention
25 août 2009

Quand je disais que j'étais null...j'étais pas si loin  lol

Sinon en compilant en /clr, tu peux éviter d'inclure stdafx.h vcclr.h ;)

Merci.