En savoir s'il y a suffisamment d'espace disque pour installer dans un dossier partagé

StackOverflow https://stackoverflow.com/questions/1459434

  •  12-09-2019
  •  | 
  •  

Question

Je dois être en mesure d'installer un programme dans un dossier partagé sur un ordinateur en réseau.

Tout d'abord je dois trouver les dossiers qui sont partagés sur un ordinateur, puis vérifier s'il y a suffisamment d'espace disque pour l'installation de procéder.

Voici ma méthode.

public static void FindShares()
    {
        try
        {
            ConnectionOptions options = new ConnectionOptions();
            options.Authentication = AuthenticationLevel.PacketPrivacy;
            options.Impersonation = ImpersonationLevel.Impersonate;
            string path = "\\\\COMPUTERNAME\\root\\cimv2";
            ManagementScope scope = new ManagementScope(path, options);

            scope.Connect();
            ObjectQuery query = new ObjectQuery("SELECT * FROM Win32_Share");

            ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, query);
            ManagementObjectCollection queryCollection = searcher.Get();

            foreach (ManagementObject m in queryCollection)
            {
                // Display shared folder information

                Console.WriteLine("Share Name : {0}", m["Name"]);
                Console.WriteLine("Share Path : {0}", m["Path"]);
                Console.WriteLine("AccessMask: {0}", m["AccessMask"]);
                Console.WriteLine("Type: {0}", m["Type"]);
                Console.WriteLine("Status : {0}", m["Status"]);
                Console.WriteLine();
            }

            string line;
            line = Console.ReadLine();
        }
        catch (Exception e)
        {
            MessageBox.Show(e.Message);
        }
    }

Quand je cours ce que je reçois cette erreur: L'accès est refusé. (Exception de HRESULT: 0x80070005 (E_ACCESSDENIED))

Je pense que je dois mettre mon imperonation diferently, mais je ne sais pas comment.

Merci pour votre aide.

Était-ce utile?

La solution

Votre refus d'accès est parce que le fournisseur WMI est usurpé votre identité quand il se connecte à la machine distante, et vous n'êtes pas un administrateur sur la machine distante.

Est ce que le PC que vous utilisez ce code sur, et le PC que vous essayez de frapper une partie d'un domaine Windows?

Votre compte utilisateur membre directement ou indirectement du groupe d'administrateurs locaux sur l'ordinateur cible?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top