олицетворение кода C # в Windows 7 - PullRequest
1 голос
/ 05 июля 2011

Мне нужно выдать себя за мой код для запуска с другим идентификатором пользователя Windows, сейчас я использую некоторый код, полученный из Интернета, который вызывает некоторые нативные библиотеки.

цель кода состоит в том, чтобы изменить разрешения для прав доступа к каталогам пользователей файлового сервера.

Я могу изменить разрешения для своей папки, но у меня есть учетные данные другого пользователя, чтобы перейти и изменитьразрешения на его папку.Но я запускаю код на своей машине, выдавая себя за него.

Но я получаю несанкционированное исключение.

код, который я использую:

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

Я не уверен, что это работает в Windows 7 или нет.Есть ли кто-нибудь, кто сталкивался с подобной проблемой? ..

Исключение, которое я получаю:

Messagee:"{"Attempted to perform an unauthorized operation."}"
stack trace:
at System.Security.AccessControl.Win32.SetSecurityInfo(ResourceType type, String name, SafeHandle handle, SecurityInfos securityInformation, SecurityIdentifier owner, SecurityIdentifier group, GenericAcl sacl, GenericAcl dacl)
at System.Security.AccessControl.NativeObjectSecurity.Persist(String name, SafeHandle handle, AccessControlSections includeSections, Object exceptionContext)
at System.Security.AccessControl.NativeObjectSecurity.Persist(String name, AccessControlSections includeSections, Object exceptionContext)
at System.Security.AccessControl.NativeObjectSecurity.Persist(String name, AccessControlSections includeSections)
at System.Security.AccessControl.FileSystemSecurity.Persist(String fullPath)
at System.IO.Directory.SetAccessControl(String path, DirectorySecurity directorySecurity)
at FolderAccessManager.Program.Main(String[] args) in 

Не могли бы вы поделиться некоторыми решениями? ..

Ответы [ 2 ]

1 голос
/ 12 октября 2011

Используете ли вы присоединенный к домену компьютер с ASP.NET?

Я получил точно такое же сообщение с этим кодом в приложении asp.net при запуске с идентификатором пула приложений по умолчанию. Изменение пользователя приложения из пула на пользователя домена с разрешениями «администратор домена» решило эту проблему (также Windows 7).

1 голос
/ 05 июля 2011

Взгляните на WindowsIdentity.Impersonate . Там вы увидите пример того, как это сделать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...