Tag: 权限

操纵Windows ACL权限的最佳方法

我的目标是找出如何使用.NET以编程方式调整Windows中文件和目录的权限。 我已经确定了以下选项: Windows API(哎呀!) Active Directory服务接口 (COM …呃…) Windows PowerShell(?) Google提供易于使用的外观。 这些似乎都不适合我。 你们走哪条路? 也许还有另一种方式?

使用Enum Flag Bit的基于WPF权限的授权

我已经做了一个月的C#所以请原谅这个问题的’本地性’,但我已经研究了几个小时,我已经打了一堵砖墙。 我已经看到了使用IIdentity和IPrincipal 进行基于角色的 WPF应用程序授权的左右示例。 我找不到很多信息,但是,在更多基于权限的授权方法中,在这个应用程序中,想象没有组,只有权限和用户列表,您可以为任何人分配任何权限。 我希望能够: 1)能够根据用户权限控制UI /元素,其状态包括:Enabled,ReadOnly,Invisible,Collapsed(如此处所示https://uiauth.codeplex.com/ ) 2)能够在类或方法级别指定需要哪些权限(类似于http://lostechies.com/derickbailey/2011/05/24/dont-do-role-based-authorization-checks-do-activity基础检查/ ) 代替: [PrincipalPermission(SecurityAction.Demand, Role = “Administrators”)] 我想要的东西: [PrincipalPermission(SecurityAction.Demand, Permission = “Can add users”)] 现在,我看到如何做到这一点的唯一方法是利用ICommand并使用大量的字符串比较在CanExecute方法中放置授权逻辑,以查看用户是否具有执行请求的操作所需的权限,如: // Employee class public bool HasRight(SecurityRight right) { return employee.Permissions.Contains(right); } // Implementation, check if employee has right to continue if (employee.HasRight(db.SecurityRights.Single(sr => sr.Description == “Can edit users”))) { // Allowed […]

为什么WellKnownSidType有时无法转换为sid / account?

问题:我正在查找每个WellKnownSidType枚举成员的帐户名称和SID,如下所示。 为什么有时会失败? 为什么有时会将WellKnownSidType转换为sid失败? 据我了解,只有从sid到accountname的转换有时会失败,甚至只有当帐户不是本地而不是域时才会失败。 例如,在将枚举LogonIdsSid转换为SID时,我得到: Bekannte SIDs des TypsLogonIdsSidkönnennichterstellt werden。 (无法创建LogonIdsSid类型的已知SID。) 或者在查找NTAuthoritySid的帐户名时 我得到:Manche oderallestartitätsverweisekontennichtübersetztwerden。 (部分或全部的idendity-references无法翻译。) Sub Main() Enumerations.SidInfo(Of System.Security.Principal.WellKnownSidType)() End Sub Public Class Enumerations Public Shared Sub SidInfo(Of T)() Dim enumType As Type = GetType(T) For Each ThisEnumValue As T In System.Enum.GetValues(GetType(T)) Try Console.WriteLine(“Enum: System.Security.Principal.WellKnownSidType.” + System.Enum.Format(GetType(T), ThisEnumValue, “G”)) Dim enumItem1 As System.Reflection.FieldInfo = enumType.GetField(System.Enum.Format(GetType(T), […]

使用webservices API确定用户在SharePoint站点/工作区中的角色

如何使用webservices API计算用户在站点中的角色? 我必须继续使用的是用户名和域名。 我发现PermissionsService.Permissions.GetPermissionCollection(url,“Web”)将返回一组允许的用户和组及其权限掩码,但我仍然需要弄清楚用户是否在任何组中然后转换权限掩盖到角色集合中。 我觉得有更好的方法来做到这一点,我只是错过了它。

使用ImpersonateLoggedOnUser移动文件

我正在尝试移动文件,但是会出现此错误: System.UnauthorizedAccessException:拒绝访问路径.. 在System.IO .__ Error.WinIOError(Int32 errorCode,String maybeFullPath) 在System.IO .__ Error.WinIOError() 在System.IO.FileInfo.MoveTo(String destFileName) 要移动文件,我有以下代码: public void MssFile_Move (string ssPath, string ssDestinationDirectoryPath, string ssDomain, string ssUsername, string ssPassword, out string ssError_message) { IntPtr admin_token = IntPtr.Zero; ssError_message = “”; try { DoImpersonateLoggedOnUser( ssDomain , ssUsername , ssPassword , out ssError_message , out admin_token); FileInfo fi = new […]

代码忽略了PrincipalPermission属性?

我在所有具有PrincipalPermission属性的业务对象上都有一个Delete方法。 例: [PrincipalPermission(SecurityAction.Demand, Role = “Vendor Manager”)] public static bool Delete(Vendor myVendor) { //do work here } 问题是它似乎完全忽略了我的PrincipalPermission。 无论他们扮演什么样的角色,它都可以让任何人通过。 还有其他我忘了做的事吗? 我在Application Startup部分的应用程序的global.asax中添加了以下内容: AppDomain.CurrentDomain.SetPrincipalPolicy(System.Security.Principal.PrincipalPolicy.WindowsPrincipal); 但这也没有任何区别。 我也尝试了以下内容: public static bool Delete(Vendor myVendor) { PrincipalPermission iPerm = new PrincipalPermission(null, “Vendor Manager”); iPerm.Demand(); //do work here } 并且不知道,这个工作得很好!….任何关于它为什么单向工作而不是另一个工作的想法?

将文件写入Common Application Data文件夹被拒绝

我使用了follwing函数将数据写入用户应用程序文件夹 private void WriteToLog(string source, string method, string msg) { string LogFile =Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData) + “\\test”; LogFile = LogFile + “\\Log.txt”; StreamWriter sw = new StreamWriter(LogFile, true ); string str = DateTime.Now.ToString() + “source=” + source + “\t Method=” + method + “\t” + msg; sw.WriteLine(str); sw.Flush(); sw.Close(); } 上述代码在管理员帐户中完美运行,但在有限的用户帐户中失败

正确使用

在我的网站中,已登录的用户可以更改其个人资料图片,此过程包括将上传的图像保存到网站根目录中的文件夹中。 当我测试它时,我收到一个错误,我应该使用权限授予对此特定文件夹的访问权限。 我无法控制控制面板,他说他确实向Images文件夹授予了对其他人的READ和WRITE权限。 再次测试之后,再次出现同样的错误,所以我编辑了web.config并包含: 现在一切似乎都很完美。 但是,我刚才在这做什么? 有安全隐患吗? 我是否允许每个人匿名访问我的网站?

如何以编程方式为管理员提供注册表项的所有权?

当我将一些机器升级到Windows 10时,我遇到了一个奇怪的问题,其中对RuntimeBroker的错误权限导致了问题。 我找到了一个在线解决方案 ,建议更改权限(首先在注册表中,然后在DCOM配置中),我正在尝试编写一个小型.NET应用程序来自动化该过程。 目前相关注册表项的所有者是NT SERVICE\TrustedInstaller ,我正在尝试将其更改为COMPUTER\Administrators 。 我有一个简单的WPF应用程序,其requestedExecutionLevel设置为“requireAdministrator”,但我仍遇到问题。 这是一段代码来说明问题: using System.Security.AccessControl; using System.Security.Principal; using Microsoft.Win32; namespace PermissionFixer { public class Fixer { public void Fix() { var subKey = Registry.ClassesRoot.OpenSubKey(@”AppID\{9CA88EE3-ACB7-47c8-AFC4-AB702511C276}”, true); if (subKey != null) { var admins = new NTAccount(“Administrators”); var ac = subKey.GetAccessControl(); ac.SetOwner(admins); ac.AddAccessRule(new RegistryAccessRule(admins, RegistryRights.FullControl, AccessControlType.Allow)); subKey.SetAccessControl(ac); } } } […]

以编程方式列出项目多个用户权限(sharepoint)

我环顾四周,还没有找到解决方案。 我已经在这里和那里找到了代码片段以找到解决方案。 我有一个名为“文档协作”的文档库,其中包含“已分配给”字段。 这是一个人/组字段。 这些人将能够处理特定文档(列表项权限)。 现在,首先,他们将拥有隐藏的权限(他们无法看到它),但是当添加到文档时,他们会看到它并能够贡献它,他们也会收到电子邮件通知。 我已附上以下完整代码。 所以,当我通过VS10调试时,我没有得到任何错误。 但它不发送任何电子邮件或不设置权限。 怎么了? using System; using System.IO; using System.Security.Permissions; using Microsoft.SharePoint; using Microsoft.SharePoint.Security; using Microsoft.SharePoint.Utilities; using Microsoft.SharePoint.Workflow; namespace ARDT.Notifications { /// /// List Item Events /// public class Notifications : SPItemEventReceiver { /// /// An item was checked in /// public override void ItemCheckedIn(SPItemEventProperties properties) { SPSite site […]