我遇到了一个情况,希望您能帮助我。我有一个在 Windows Server 2012 R2 上运行的数据库,具有特定的用户帐户。同一个用户帐户正在运行 Windows 服务。此服务执行一些工作,并对数据库进行一些更新。到目前为止,效果很好。
现在,此服务必须在某个时候运行外部进程。我使用ProcessStartInfo
And执行此操作Process.Start
。这会出现以下异常:
System.ComponentModel.Win32Exception (0x80004005): 在 System.Diagnostics.Process.StartWithShellExecuteEx(ProcessStartInfo startInfo) 处、在 System.Diagnostics.Process.Start() 处、在 System.Diagnostics.Process.Start(ProcessStartInfo startInfo) 处拒绝访问
根据这个stackoverflow 答案我必须将此用户(Active Directory 用户)添加到服务器。目前,该用户无权访问服务器。
而我实际上想保持这种方式,只允许用户访问启动进程(程序),而无需访问服务器。
这可能吗,还是我走错了路?
控制面板>>用户帐户>>管理用户帐户>>添加...可能会完成这项工作,但我不知道在访问级别列表中我必须选择哪个访问级别。
答案1
好吧,我认为这个异常有点误导。它看起来像是用户不被允许运行该应用程序,但真正的问题是用户没有访问该应用程序所在目录的权限。
- 更改文件夹的安全设置以允许
Read & Execute
用户授予权限将解决此问题。
这样就不需要将用户添加到服务器了。