J'y arrive pas... [Résolu]

Messages postés
66
Date d'inscription
lundi 22 mai 2006
Dernière intervention
25 août 2009
- - Dernière réponse : babaslow
Messages postés
66
Date d'inscription
lundi 22 mai 2006
Dernière intervention
25 août 2009
- 24 juil. 2007 à 03:18
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 :))
Afficher la suite 

Votre réponse

4 réponses

Meilleure réponse
Messages postés
2717
Date d'inscription
vendredi 28 juin 2002
Dernière intervention
13 janvier 2016
3
Merci
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

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 98 internautes ce mois-ci

Commenter la réponse de ShareVB
Messages postés
2717
Date d'inscription
vendredi 28 juin 2002
Dernière intervention
13 janvier 2016
0
Merci
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
Commenter la réponse de ShareVB
Messages postés
66
Date d'inscription
lundi 22 mai 2006
Dernière intervention
25 août 2009
0
Merci
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 :).
Commenter la réponse de babaslow
Messages postés
66
Date d'inscription
lundi 22 mai 2006
Dernière intervention
25 août 2009
0
Merci
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.
Commenter la réponse de babaslow

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.