我需要冒充我的代码以使用不同的Windows用户ID运行,现在我正在使用一些代码,我从Web上调用了一些本机库。
代码的目的是更改文件服务器用户目录权限的权限。
我可以更改我的文件夹权限,但我有其他用户的凭据去更改其文件夹的权限。但是我通过模仿他在我的机器上运行代码。
但是,我正在获得未经授权的例外。
我正在使用的代码是:
[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
请您分享一些解决方案..?
答案 0 :(得分:1)
看看WindowsIdentity.Impersonate。在那里你会看到一个如何去做的例子。
答案 1 :(得分:1)
您是否在ASP.NET中使用已加入域的计算机?
当使用默认的apppool标识运行时,我在asp.net应用程序中获得完全相同的消息。将apppool用户更改为具有“域管理员”权限的域用户解决了此问题(也是Windows 7)。