刷新当前用户配置文件
本文关键字:配置文件 用户 刷新 | 更新日期: 2023-09-27 18:05:19
。。。我想通过c#工具授予用户临时管理员权限。因此,我将用户添加到管理员用户组中(在特权服务帐户下运行的后台服务可以完成这项工作(。但是,这些更改仅在新会话(注销/重新登录后(中生效,这很不方便。是否有刷新当前用户配置文件的方法?
我尝试了几种方法:
- 通过.net进程。从LoadUserProfile属性设置为true开始
- 下一次尝试是通过LoadUserProfile Win32 Api函数
- 另一种方法是使用.net模拟来模拟用户
所有这些尝试都没有识别出权限更改。在我看来,有一个缓存的用户配置文件,其中包含旧的权限,可以随时重新加载。
加载新配置文件的唯一方法是runas命令,但我们不希望用户摆弄命令行,应该可以从.net 中执行此操作
如果有其他选择会很好吗?也许有一种工具可以做到这一点?
好的,我重新登录用户,然后将新令牌与例如CreateProcessAsUser结合使用,使用新令牌运行新进程。有没有办法为当前的windows环境分配新的令牌,因此用户在windows中执行的所有操作都使用这个新令牌?否则,我可以使用一些其他工具,如lsrunas,在新的上下文中打开进程,并避免winapi调用。
从我们的角度来看,我们信任用户(这是他的私人笔记本(,他可以安装他想要的软件(暂时(,但我们用我们的工具记录每一次安装。我们正在后台运行一个本地管理员帐户的服务,该帐户管理组分配和系统文档。
登录Windows时,会创建一个安全令牌,解析所有组成员身份(包括嵌套成员身份(。令牌包含用户所属的SID(安全标识符(列表。第一个SID是用户自己的ID,然后包括任何组和角色(如交互式登录、每个人等(。这意味着,每次进行访问控制时,不必对照用户数据库(可能是Active Directory服务器(查找组成员身份。相反,根据令牌检查对象(例如文件(的ACL(访问控制列表(。
若要刷新组成员身份,您需要创建一个新的令牌。您可以按照自己的描述注销然后再次登录,或者您必须使用LogoUser为同一用户再次登录。然而,普通用户无法访问该功能。
我认为这一切都归结为寻找另一种设计。从安全角度来看,动态地从管理组中添加和删除用户看起来很奇怪。有没有其他方法可以让用户访问所需的资源?你能在LocalSystem帐户下运行的Windows服务中完成实际工作吗?