2016-08-09 10 views
0

Windows上でファイルのUID(所有者)を取得することはできますか? FileInfo.Sys()を使用しようとしましたが、Linux上でのみ動作します。私は本当にこの1つに困惑しているし、UIDを取得する方法を理解することはできません。Windows上でファイルを移動する(golang)

+0

何が返されますか? https://msdn.microsoft.com/en-us/library/windows/desktop/aa446629%28v=vs.85%29.aspx私はそこにあなたの答えが潜んでいると思う。おそらくDWORDです。これは、「ダブルワード」またはバイトまたはuintです。 – Dale

+0

しかし、それがGoの私を助けることができましたか? – askretov

答えて

1

最初の問題は、ファイル/ディレクトリの所有権をサポートするWindows固有のファイルシステムには、WindowsユーザーにUIDがないため「所有者UID」の概念がないことです。

Windows NT回線またはカーネルのセキュリティは、いわゆる「アクセス制御リスト」(ACL)を使用して実装され、セキュリティプリンシパル(ユーザーなど)は、いわゆる「セキュリティ識別子」(SID )。 SID is a variable-length multi-field data structureは通常バイト配列として渡されます。

もう1つの問題は、ACL対応のWindowsファイルシステム上のファイルに所有者がまったくなく(ACLも接続されていない可能性がある)ということです。これはまれですが可能です。

だから「Windowsファイルシステム上のエントリ所有者のUIDのようなものはありません」という説明の部分はあなたにとって問題ありませんが、これだけです。

もし実際には、 "Windowsファイルシステム上のエントリのセキュリティ情報を取得するにはどうすればよいですか"と質問したければ、その質問はより複雑になります。 AFAIK Goに同梱の在庫標準ライブラリには、Win32 APIの関連ビットの周りに必要なラッパーがありません。したがって、これを実装するには、あなた自身でラップするか(結局、それほど難しいことではありません)、またはヘルパーパッケージを見つけようとする必要があります。

関連する問題