首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >asp.net使用管理员帐户运行程序

asp.net使用管理员帐户运行程序
EN

Stack Overflow用户
提问于 2009-12-09 21:14:21
回答 3查看 7.5K关注 0票数 5

我需要使用管理员帐户从ASP.NET应用程序运行一个控制台应用程序,并启用桌面交互。我已经尝试了下面的代码,控制台应用程序运行正常,但在网络服务帐户中。有什么办法在管理员帐号下运行控制台吗?

代码语言:javascript
复制
    string enginePath = Server.MapPath(@"~/engine/MyConsole.exe");
    System.Diagnostics.ProcessStartInfo info = new System.Diagnostics.ProcessStartInfo(enginePath, "");
    System.Diagnostics.Process p = System.Diagnostics.Process.Start(info);            
    p.WaitForExit();

致敬,托马斯

EN

回答 3

Stack Overflow用户

发布于 2009-12-09 21:17:38

您可以使用模拟,这里有一个示例here

就我个人而言,我不喜欢asp.net中的模拟,你需要处理密码不被更改或在代码中更改它们。作为asp.net用户,有没有办法运行您想要的东西?

编辑:

你可以通过使用"NETWORK SERVICE“作为用户名来模拟网络服务,这至少会减少一些密码问题。

票数 0
EN

Stack Overflow用户

发布于 2009-12-09 21:22:18

您可以使用清单文件并将其构建到控制台应用程序中,该应用程序将指示它始终在管理员帐户下运行。请参阅此example

如果这对您无效,那么您可以尝试在ProcessStartInfo属性中传递管理员帐户凭据,例如

代码语言:javascript
复制
string enginePath = Server.MapPath(@"~/engine/MyConsole.exe");
System.Diagnostics.ProcessStartInfo info = new System.Diagnostics.ProcessStartInfo(enginePath, "");
info.UserName = "Administrator";
info.Password = "Password";
System.Diagnostics.Process p = System.Diagnostics.Process.Start(info);                p.WaitForExit(); 
票数 0
EN

Stack Overflow用户

发布于 2009-12-09 21:27:44

另一个用户已建议进行模拟。如果这足够好的话,你就可以开始了。然而,就像他说的,有一些维护问题需要处理,也有一些安全问题需要处理。

我过去使用过的一些选项可能适用于您的情况,也可能不适用于您的情况:

  1. 如果任务的时间表是可预测的,只需将其添加到Windows的计划任务中,设置适当的工作人员帐户(管理员或其他),然后就可以了。我相信也有一些方法可以通过编程触发计划任务,但我从来没有这样做过。谷歌搜索应该会让你将控制台应用程序的逻辑设置为在适当帐户下运行的服务。然后让该服务侦听来自你的web应用程序的“触发器”--文件删除或其他更简单的东西。

无论哪种方式,这样做都是为了避免在ASP页面中存储任何凭证,并且不必授予它不需要的进程权限。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1873796

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档