我有一个C#Windows服务以提升的权限运行。 其中一项服务的工作是创build一个新的本地用户帐户,并使用该帐户执行一些设置任务(设置一些registry设置,等等)。 该服务正在“本地系统”帐户下运行。
清单中的权限
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
产生该过程的代码
using (var proc = new Process()) using (var password = new securestring()) { foreach (var c in accountPassword) { password.AppendChar(c); } proc.StartInfo = new processstartinfo( pathToExecutable,arguments) { LoadUserProfile = true,UseShellExecute = false,CreateNowindow = true,RedirectStandardError = true,RedirectStandardInput = true,RedirectStandardOutput = true,Domain = accountDomain,UserName = accountName,Password = password }; StringWriter outWriter = new StringWriter(),errWriter = new StringWriter(); proc.OutputDataReceived += (o,e) => outWriter.Write(e.Data); proc.ErrorDataReceived += (o,e) => errWriter.Write(e.Data); proc.EnableRaisingEvents = true; proc.Start(); // <-- exception thrown here ...
导致exception
System.ComponentModel.Win32Exception(0x80004005):访问被拒绝
在System.Diagnostics.Process.StartWithCreateProcess(processstartinfo startInfo)
在 ...
实验
如果我去本地服务控制面板,我可以更改服务,使其以pipe理员帐户(即“JoeAdmin”,而不是“pipe理员”)运行,并且程序成功。 下面是令人沮丧的部分:我试图从服务运行whoami.exe /priv ,看看我有什么特权作为“JoeAdmin”,我没有作为“本地系统”,会导致程序失败。 剧透:根据whoami的说法,“本地系统”具有“JoeAdmin”所拥有的所有特权,但有一个例外(SeRemoteShutdownPrivilege,我希望这不是重要的)。
本地系统特权
(作为提醒,操作失败,这些特权。)
特权信息
----------------------
特权名称描述状态
=============================== =================== ====================== ========
SeAssignPrimaryTokenPrivilegereplace进程级别标记已禁用
SeLockMemoryPrivilegelocking内存中的页面已启用
SeIncreaseQuotaPrivilege调整进程禁用的内存配额
SeTcbPrivilege作为操作系统的一部分启用
SeSecurityPrivilegepipe理审核和安全日志已禁用
SeTakeOwnershipPrivilege取消文件或其他对象的所有权
SeLoadDriverPrivilege加载和卸载设备驱动程序已禁用
SeSystemProfilePrivilegeconfiguration文件系统性能已启用
SeSystemtimePrivilege将系统时间更改为禁用
SeProfileSingleProcessprivilegeconfiguration文件单个进程已启用
SeIncreaseBasePriorityPrivilege增加调度优先级启用
SeCreatePagefilePrivilege创build一个页面文件启用
SeCreatePermanentPrivilege创build永久共享对象已启用
SeBackupPrivilege备份文件和目录禁用
SeRestorePrivilege还原文件和目录已禁用
SeShutdownPrivilegeclosures系统禁用
SeDebugPrivilegedebugging程序已启用
SeAuditPrivilege生成安全审计已启用
SeSystemEnvironmentPrivilege修改固件环境值已禁用
SeChangeNotifyPrivilege跳过遍历检查已启用
Sendows特权从扩展坞中移除计算机已禁用
SeManageVolumePrivilege执行卷维护任务已禁用
SempersonatePrivilege启用身份validation后模拟客户端
SeCreateGlobalPrivilege创build全局对象已启用
SeIncreaseWorkingSetPrivilege增加进程工作集启用
SeTimeZonePrivilege更改时区已启用
SeCreateSymbolicLinkPrivilege创build符号链接已启用
JoeAdmin的权限
(操作成功了这些权限。)
我如何检查用户是否具有执行权限?
以编程方式设置ACCESS_ALLOWED_ACE,获得与RegEdit不同的结果
Symfony2 Capifony部署setfaclcaching目录不允许操作
如何知道我在Windows中是否具有pipe理权限?
检查两个NTAccount对象的相等性
特权信息
----------------------
特权名称描述状态
=============================== =================== ====================== ========
SeIncreaseQuotaPrivilege调整进程禁用的内存配额
SeSecurityPrivilegepipe理审核和安全日志已禁用
SeTakeOwnershipPrivilege取消文件或其他对象的所有权
SeLoadDriverPrivilege加载和卸载设备驱动程序已禁用
SeSystemProfilePrivilegeconfiguration文件系统性能已禁用
SeSystemtimePrivilege将系统时间更改为禁用
SeProfileSingleProcessprivilegeconfiguration文件单个进程已禁用
SeIncreaseBasePriorityPrivilege增加调度优先级禁用
SeCreatePagefilePrivilege创build页面文件已禁用
SeBackupPrivilege备份文件和目录已禁用
SeRestorePrivilege还原文件和目录已禁用
SeShutdownPrivilegeclosures系统禁用
SeDebugPrivilegedebugging程序已禁用
SeSystemEnvironmentPrivilege修改固件环境值已禁用
SeChangeNotifyPrivilege跳过遍历检查已启用
SeRemoteShutdownPrivilege强制从远程系统closures已禁用
Sendows特权从扩展坞移除计算机已禁用
SeManageVolumePrivilege执行卷维护任务已禁用
SempersonatePrivilege启用身份validation后模拟客户端
SeCreateGlobalPrivilege创build全局对象已启用
SeIncreaseWorkingSetPrivilege增加一个进程工作集disabled
SeTimeZonePrivilege更改时区已禁用
SeCreateSymbolicLinkPrivilege创build符号链接已禁用
这个问题
我可以从本地系统帐户产生进程吗? 要么,
该服务是由WiX安装程序安装的,有没有办法让服务从安装程序获得正确的权限?
<ServiceInstall Id="ServiceInstaller" Type="ownProcess" Name="MyCoolService" displayName="My Cool Service" Description="My Cool Service Component" Start="auto" ErrorControl="normal" />
GetProcessesByName()和Windows Server 2003计划任务
修复403 Forbidden别名目录与Apache
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。