J'y arrive pas...

Résolu
Utilisateur anonyme - 22 juil. 2007 à 09:14
 Utilisateur anonyme - 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 :))

4 réponses

ShareVB Messages postés 2676 Date d'inscription vendredi 28 juin 2002 Statut Membre Dernière intervention 13 janvier 2016 26
23 juil. 2007 à 20:18
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
3
ShareVB Messages postés 2676 Date d'inscription vendredi 28 juin 2002 Statut Membre Dernière intervention 13 janvier 2016 26
22 juil. 2007 à 22:11
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
0
Utilisateur anonyme
23 juil. 2007 à 00:01
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 :).
0
Utilisateur anonyme
24 juil. 2007 à 03:18
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.
0
Rejoignez-nous