2015-10-12 16 views
15

Windows 10 IoTコアを搭載したRaspberry PIで実行する予定のC#UWPアプリケーションがあります。私が持っている問題は、いくつかのファイルをコピーするためにUNC共有に接続しようとするときです。UWPアプリでIoTコアを実行しているRaspberry Piからネットワーク共有にアクセスする方法

ネットワークはローカルのユーザー資格情報を持つホームネットワークであり、共有は同じネットワーク上の別のコンピュータにあります。

アプリケーションをローカルで実行しているときに、共有に接続するのにawait StorageFolder.GetFolderFromPathAsync(@"\\share\folder");を使用しても問題ありません。これは、使用している資格情報がローカルマシンに保存されているためです。 RPi上で実行されたとき、「システムは指定されたファイルを見つけることができません」というエラーを受け取りました。

    を:私が試した何

    誰もが、私はこのドライブに接続する方法を上の任意のアイデアを持っています、私はそれを動作させるために、この段階では何​​のためのゲームだ...

  1. 共有にはすべてのユーザーにアクセス許可があり、資格情報なしでアクセスできます。
  2. ネットワーク共有コンピュータのファイアウォールはオフです。
  3. マニフェストにはプライベートネットワーク、エンタープライズ認証、インターネット(両方)の設定があります(ローカルでも問題ありません)。
  4. await StorageFolder.GetFolderFromPathAsync(@"\\share\folder");は(「指定されたファイルを見つけることができません。」)
  5. net use "\\share\folder" "password" /USER:"user"作品とUNCとPowerShellを使用Prevent WNetAddConnection2 class which allows prohibited user to access shared folderユーザプロンプトの両方を有するとせずWNetUseConnectionを使用してみました
  6. のようWNetAddConnection2を使用してみました
  7. を閲覧することができます(いずれも動作しません)
  8. FolderPickerまたはFileOpenPickerがIoTコア(https://ms-iot.github.io/content/en-US/win10/UnavailableApis.htm)で無効になっているようです。事前に

おかげで、

ポール。

+0

コンピュータ名の代わりにUNCパスでリモートマシンのIPアドレスを使用しようとしましたか?名前解決の問題が発生している可能性があります。 \\ computername \ sharenameではなく\\ ipaddress \ sharename? – BStateham

+0

上記の関連性のある場所で、他のバリエーションと一緒にipアドレスを試してみました\ c $ \。 –

+0

まず、共有をネットワークドライバとしてマッピングしてみましょう(例えば、dosコマンドの 'net use'を使って)、それをローカルドライブ文字でアクセスできますか?今私はPi closebyをテストしていません。 –

答えて

1

偽装を試したことはありますか?ここで私のプロジェクトで使用しているもの:

[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(); 
} 
関連する問題