我需要我的 winform 程序作为另一个用户运行(它将在任务调度程序下运行)而不是登录用户。我怀疑问题在于我的应用程序是基于 gui 而不是基于命令行(这有什么不同),所以 gui 需要加载做它的事情然后关闭。这可能是在 XP 或 Vista 下吗?
谢谢
我需要我的 winform 程序作为另一个用户运行(它将在任务调度程序下运行)而不是登录用户。我怀疑问题在于我的应用程序是基于 gui 而不是基于命令行(这有什么不同),所以 gui 需要加载做它的事情然后关闭。这可能是在 XP 或 Vista 下吗?
谢谢
计划任务可以以指定用户的身份“运行”,该用户可能与登录用户不同。
您可以在创建任务时或通过编辑现有任务的属性来指定此用户。
如果您的应用程序需要作为调度任务运行,那么它就不能真正拥有 UI。作为最低要求,它应该真正能够通过命令行运行。
最好的方法是将 UI 与实际处理分开,以便您仍然可以在需要时以交互方式运行它。这也将使测试您的应用程序变得更加容易。
编辑:编辑打字和感觉
我会投票给第一个选项,或者提供额外的可能性:在您的代码中使用模拟。尽管这里可能有点矫枉过正/不适合您的需求。
执行程序的另一种方法是基于配置文件甚至数据库连接以编程方式更改用户。一个示例项目位于代码项目上:
http://www.codeproject.com/KB/cs/runas.aspx
希望这可以帮助。
您正在寻找 Process.Start 方法。其中一个重载接受用户名/密码对。该过程将使用这些用户凭据创建。
var app = Process.Start(@"c:\path\to\some\app.exe", userName, password, domainOrEmptyString);