2015-10-12 27 views
15

Ho un'app UWP C# che intendo eseguire su un Raspberry PI con Windows 10 IoT Core. Il problema che ho è quando provo a connettermi a una condivisione UNC per copiare alcuni file.Come accedere a Condivisione di rete da Raspberry Pi con IoT Core nell'app UWP

La rete è solo una rete domestica con credenziali utente locali, la condivisione è su un altro computer sulla stessa rete.

Quando si esegue l'applicazione a livello locale posso solo usare await StorageFolder.GetFolderFromPathAsync(@"\\share\folder"); per connettersi alla condivisione e questo funziona bene, sto assumendo questo è perché le credenziali che sto usando sono salvati sulla macchina locale. Quando è stato eseguito su RPi, l'errore ricevuto è: "Il sistema non riesce a trovare il file specificato."

Qualcuno ha qualche idea su come avrei collegarsi a questa unità, io sono pronta a tutto in questa fase per farlo funzionare ...

che cosa ho provato:

  1. La condivisione ha permessi per tutti e si può accedere senza credenziali
  2. Il firewall del computer di condivisione di rete è spento.
  3. manifest dispone delle reti private, dell'autenticazione aziendale e della configurazione di Internet (entrambe) (presupponendo che funzioni come funziona localmente).
  4. await StorageFolder.GetFolderFromPathAsync(@"\\share\folder"); ("Il sistema non riesce a trovare il file specificato.")
  5. utilizzando PowerShell con net use "\\share\folder" "password" /USER:"user" opere e UNC possono essere sfogliati
  6. provato a usare WNetAddConnection2 come in Prevent WNetAddConnection2 class which allows prohibited user to access shared folder
  7. Provato using WNetUseConnection sia con richiesta utente e senza (nessuno dei due funziona)
  8. FolderPicker o FileOpenPicker ma questi sembrano essere disabilitati per IoT Core (https://ms-iot.github.io/content/en-US/win10/UnavailableApis.htm).

Grazie in anticipo,

Paul.

+0

Hai provato a utilizzare l'indirizzo IP delle macchine remote nel percorso UNC anziché il nome del computer? Potresti avere un problema di risoluzione dei nomi. \\ ipaddress \ sharename invece di \\ computername \ sharename? – BStateham

+0

Sì, ho provato l'indirizzo IP dove rilevante sopra, insieme ad altre variazioni, \ c $ \ per esempio. –

+0

Puoi provare a mappare la condivisione come netwerkdrive prima (ad esempio tramite il comando dos 'net use') e quindi accedervi tramite la sua lettera di unità locale? Non ho un vicino Pi per testarlo adesso. –

risposta

1

Hai già provato la rappresentazione? Ecco cosa utilizzo in uno dei miei progetti:

[DllImport("advapi32.dll", SetLastError = true)]    
public static extern bool LogonUser(string lpszUsername, string lpszDomain, string lpszPassword, int dwLogonType, int dwLogonProvider, ref IntPtr phToken); 

private void Impersonate(Enum domainName, string userName, string password) 
{ 
    IntPtr _tokenHandle = IntPtr.Zero; 
    int Logon32_Provider_Default = 0; 
    int Logon32_Logon_Interactive = 2; 

    bool userSuccess = LogonUser(userName, domainName.ToString(), password, Logon32_Logon_Interactive, Logon32_Provider_Default, ref _tokenHandle); 

    if (!userSuccess) 
    { 
     throw new Win32Exception(Marshal.GetLastWin32Error()); 
    } 

    WindowsImpersonationContext _impersonatedUser = new WindowsIdentity(_tokenHandle).Impersonate(); 
}