对非本地管理员 Windows 用户使用模拟时,DLL 引用失败并显示“访问被拒绝”

StackOverflow https://stackoverflow.com/questions/661081

我们有一项使用 WCF 和模拟的服务。

用户可以使用属于 Active Directory 系统的凭据登录到客户端应用程序。

用户登录是模拟服务端的。

当登录的用户在其主机上设置为本地管理员时,这可以正常工作。

但当他们是非特权(标准)用户时就会出现问题。我们收到一个异常,指出访问被拒绝“我们的 DLL 之一”。(我们所有的 DLL 都会发生这种情况)

有帮助吗?

解决方案

这其实就是一个简单的部署环境的权限问题。

使用 代码访问安全策略工具 (Caspol.exe) 这只是应用正确权限的问题。有一个如何使用指南 msdn.

实际的命令行字符串是

CasPol.exe -addgroup 1 -strong -file D:\deployment_location\WcfServiceHost.exe -noname -noversion FullTrust

这是在服务集合上执行的。由于我们的版本号经常更改,因此使用“noversion”很有帮助,因此该服务在我们的设置中还需要 FullTrust。

要对各种计算机重新使用修复程序,请创建 PowerShell 脚本(或批处理文件)并使用“polchgprompt”参数关闭提示,以便脚本可以在无需干预的情况下执行。

polchgprompt - “启用或禁用每当使用会导致策略更改的选项运行 Caspol.exe 时显示的提示。”

脚本结构:

CasPol.exe -polchgprompt off

--all the individual service calls--
CasPol.exe -addgroup 1 -strong -file D:\deployment_location\WcfServiceHost.exe -noname -noversion FullTrust
...

CasPol.exe -polchgprompt on
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top