visual tools studio rpi2 raspberry c# uwp raspberry-pi2 unc windows-10-iot-core

c# - tools - Cómo acceder a Network Share desde Raspberry Pi con IoT Core en la aplicación UWP



windows iot core image helper (1)

Tengo la aplicación ac # UWP que pretendo ejecutar en una Raspberry PI con Windows 10 IoT Core. El problema que tengo es cuando intento conectarme a un recurso compartido UNC para copiar algunos archivos.

La red es solo una red doméstica con credenciales de usuario local, compartir en otra computadora en la misma red.

Cuando await StorageFolder.GetFolderFromPathAsync(@"//share/folder"); la aplicación localmente, solo puedo usar await StorageFolder.GetFolderFromPathAsync(@"//share/folder"); para conectarme al recurso compartido y esto funciona bien, supongo que esto se debe a que las credenciales que estoy usando se guardan en la máquina local. Cuando se ejecuta en el RPi, el error recibido es: "El sistema no puede encontrar el archivo especificado".

¿Alguien tiene alguna idea sobre cómo me conectaría a este disco? Estoy en juego en cualquier momento para que funcione ...

Lo que he intentado:

  1. Compartir tiene permisos para todos y se puede acceder sin credenciales
  2. El servidor de seguridad del equipo de red compartida está desactivado.
  3. manifest tiene las redes privadas, la autenticación de la empresa y la configuración de Internet (ambas) (suponiendo que funciona correctamente a nivel local).
  4. await StorageFolder.GetFolderFromPathAsync(@"//share/folder"); ("El sistema no puede encontrar el archivo especificado.")
  5. usando powershell con net use "//share/folder" "password" /USER:"user" funciona y se puede navegar por unc
  6. Se intentó usar WNetAddConnection2 como en la clase Prevent WNetAddConnection2 que permite a los usuarios prohibidos acceder a la carpeta compartida
  7. WNetUseConnection usar WNetUseConnection con ambos indicadores de usuario y sin (ninguno funciona)
  8. FolderPicker o FileOpenPicker, pero estos parecen estar deshabilitados para IoT Core ( https://ms-iot.github.io/content/en-US/win10/UnavailableApis.htm ).

Gracias por adelantado,

Pablo.


¿Ya has probado la suplantación? Esto es lo que uso en uno de mis proyectos:

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