欢迎光临 Enjoy IT (ITECN.NET) 登录 | 注册 | 帮助

妙用服务提升进程的运行权限

问题(原样提供)

各位, 现公司在开发一套针对管理XP用户使用的软件,遇一难题,百思不得其解,望各位能相助,问题是这样的:
ClientUserDomain User,Domain UserClient只是属于User
Group,
没有系统的权限的,现的开发软件的Client,需要在用户登陆系统使用系统的情况下运行,但是,user没有系统权限,所以,软件在读写注册表时,显示为没有权限,
公司的安全使用为不能给用户的系统权限,有没有一种转变,
在命令提示符的后台运行的情况下,将此时登陆的权限该为Adaministrator的权限,在做完注册表的读写后,又转为user的登陆权限?

解答

将应用程序安装为服务,可以应用于以下的场合:
1. 即使登录用户已经注销,该应用程序(服务)还是可以继续运行。
2. 该应用程序可以无需用户干涉处理请求。
3. 应用程序(服务)能够以自身的服务帐户身份运行,能够以高出登录帐户的特权运行。

方法的大概是将该自用程序安装为系统服务(借助Sc Create命令),并以System的帐户身份运行,这样就可以避免权限不够的问题,另外如果希望看到应用程序的运行界面,也必须借助System帐户。可以将该服务的启动类型设置为手动,这样可以根据需要灵活地启动。步骤简述如下:
1. 假设该应用程序的Image Path位于C:\App.exe
2. 下载安装Windows Server 2003 Resource Kit,并在安装目录下确认具有srvany.exe程序。
3. 以管理员身份登录系统,打开命令提示符窗口,运行以下命令:
Sc Create YourServiceName type= interact type= own start= demand binpath= Srvany path obj= LocalSystem displayname= YourServiceDisplayName
4. 打开注册表,进入以下注册表项:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\
YourServiceName
在其下新建一个Parameters项,并新建一个Application的字符串键值,将其数值数据命名为C:\App.exe。
5. 这样每次开机时,都会自动以System帐户身份启动该服务,无需人工干预。

如果需要受限帐户可以手动控制该服务的启动、停止,则可以利用“安全配置和分析”管理单元、或者利用subinacl命令(Windows Resuorce Kit Tools)来修改该服务的权限,以确保普通帐户可以启动该服务。

注意 不能在“服务”管理单元里双击新建的应用程序服务,然后在属性对话框的“登录”标签页里修改帐户的启动身份。这只能修改该服务的安全上下文,而不是修改该服务的访问权限。

补充 

1. 也可以用Windows Resource Kit 2003里的Instsrv命令配合Srvany命令将App.exe安装为服务,但是SC命令的控制能力相对更好一些。对于WIN2K用户,可以尝试将XP下的SC命令拷贝使用,不过未经测试。
2. 可以将Microsoft Virtual PC的虚拟机安装成服务,这样即使用户已经注销,虚拟机照样可以运行,其好处是把虚拟机安装成域控制器,然后可以让宿主机登录到虚拟机的域中,具体方法可以参考以下的帖子:
http://blogs.itecn.net/blogs/ahpeng/archive/2005/08/02/715.aspx

 

已发表 2005年7月1日 10:57 作者 ahpeng

评论通知

如果您想在帖子更新时接到邮件通知,请先登录。这里

订阅帖子评论使用 RSS

评论

2005年7月2日 8:18 by ahpeng

# re: 如何让进程以更高权限运行?

运行Sc,创建LocalSystem的服务也需要相应的权限吧。你的意思是不是先是系统admin将这个程序安装成自动启动的服务?

对于QQ,想要让公司网络系统的admin把它变为缺省服务启动可能不太容易吧。:)

2005年7月2日 15:05 by ahpeng

# re: 如何让进程以更高权限运行?

您好!
是的,需要先请Admin来创建服务。
至于QQ的话,确实不适合将其安装为服务,我疏忽了,先将这段文字去掉。
多谢啦!

说说您的看法?

(必填) 
必填 
(必填)