Groups | Blog | Home
all groups > dotnet security > january 2007 >

dotnet security : How to find out file owner?


Dmitry Nogin
1/25/2007 6:55:55 PM
Hi,
The following code doesn't work for mapped drives:

using System;
using System.Text;
using System.Threading;
using System.Security.AccessControl;
using System.Security.Principal;
using System.IO;

namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
FileInfo fi = new FileInfo(@"c:\boot.ini");
FileSecurity fs = fi.GetAccessControl();
IdentityReference ir = fs.GetOwner(typeof(NTAccount));
Console.WriteLine(ir.Value);
}
}
}

What should I do to make it work for mapped drives or UNC (like
\\10.0.61.22\c$\boot.ini)?

(Windows XP network; logged on using domain administrator account)

Thanks

Joe Kaplan
1/26/2007 5:37:45 PM
I'm not sure what the problem is, but can you explain more about what
doesn't work? Does it crash? Can you not access the security descriptor?
Can you just not access the owner or does the translation of the SID into an
NTAccount fail?

Joe K.

--
Joe Kaplan-MS MVP Directory Services Programming
Co-author of "The .NET Developer's Guide to Directory Services Programming"
http://www.directoryprogramming.net
--
[quoted text, click to view]

Joe Kaplan
1/29/2007 10:24:53 AM
If the SID is local to the machine that it is coming from, then that might
explain it. The current machine may have no way to determine who that user
is. I can't explain why Windows explorer would be able to do it as they
should be using the same APIs, but sometimes things aren't that obvious.

What is the SID in this case? Does it belong to a specific local machine
user?

Joe K.

--
Joe Kaplan-MS MVP Directory Services Programming
Co-author of "The .NET Developer's Guide to Directory Services Programming"
http://www.directoryprogramming.net
--
[quoted text, click to view]

Dmitry Nogin
1/29/2007 12:43:23 PM
Yes, the problem is about SID translation. I can acquire SID but translation
into an NTAccount fails.

BTW, I can see actual value in Windows Explorer.


[quoted text, click to view]

Joe Kaplan
1/31/2007 8:58:51 AM
I honestly don't know. It is a generally good idea to trap the exception
returned when trying to convert between a SID and NTAccount though, as that
can fail unexpected for a variety of reasons. Sometimes you can only ever
get the original SID.

Joe K.

--
Joe Kaplan-MS MVP Directory Services Programming
Co-author of "The .NET Developer's Guide to Directory Services Programming"
http://www.directoryprogramming.net
--
[quoted text, click to view]

Dmitry Nogin
1/31/2007 12:05:05 PM
I checked all the possible situations:
BULTIN\Administrator
MYDOMAIN\Administrator
etc...

Sometimes it works, sometimes - no. I couldn't find any dependancy on the
origin of the account.


[quoted text, click to view]

AddThis Social Bookmark Button