Scopri se c'è abbastanza spazio su disco per l'installazione in una cartella condivisa

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

  •  12-09-2019
  •  | 
  •  

Domanda

Ho bisogno di essere in grado di installare un programma in una cartella condivisa su un computer in LAN.

Per prima cosa devo scoprire quali cartelle condivise su un computer, e quindi verificare se v'è sufficiente spazio su disco per l'installazione di procedere.

Ecco il mio metodo.

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);
        }
    }

Quando ho eseguito questo io ottenere questo errore: Accesso negato. (Eccezione da HRESULT: 0x80070005 (E_ACCESSDENIED))

Credo che devo impostare il mio imperonation diferently, ma io non so come.

Grazie per il vostro aiuto.

È stato utile?

Soluzione

Il tuo accesso negato è perché il provider WMI che si sta impersonando quando si connette al computer remoto, e tu non sei un amministratore sul computer remoto.

E 'la PC si esegue questo codice su, e il PC si sta cercando di colpire parte di un dominio di Windows?

È il tuo account direttamente o indirettamente, un membro del gruppo di amministratori locali sul computer di destinazione?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top