c# - 无法加载可执行文件

标签 c# .net windows service process

我正在尝试创建一个可以打开应用程序的服务,但是我没有成功。因此,我下载了以下示例代码,并尝试基于它创建服务。但是,它也不起作用。发生的是代码执行,但从未调用可执行文件(在以下情况下,计算器未打开)。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Linq;
using System.ServiceProcess;
using System.Text;
using System.Threading.Tasks;

namespace Open_Calculator
{
    public partial class Service1 : ServiceBase
    {
        public static Process process;
        public Service1()
        {
            //InitializeComponent();
            string[] args = { "1", "2" };
            OnStart(args);
        }
        protected override void OnStart(string[] args)
        {
            start_calc();
        }
        protected override void OnStop()
        {
        }
        static protected void start_calc()
        {
            process = new Process();
            process.StartInfo.FileName = @"C:\Windows\system32\calc.exe";
            process.StartInfo.CreateNoWindow = true;
            process.StartInfo.ErrorDialog = false;
            process.StartInfo.RedirectStandardError = true;
            process.StartInfo.RedirectStandardInput = true;
            process.StartInfo.RedirectStandardOutput = true;
            process.StartInfo.UseShellExecute = false;
            process.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
            process.Start();
        }
    }
}

在控制台应用程序中复制粘贴的完全相同的代码可以工作。

该服务设置为与桌面交互,并设置为以“LocalSystem”运行。

在我测试时,运行该服务的帐户确实可以访问 C:\Windows\System32。 Process.Start() 没有返回任何错误,并且 calc 没有在后台运行(通过任务管理器检查)

最佳答案

以“以管理员身份运行”权限执行它

关于c# - 无法加载可执行文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20004026/

相关文章:

.net - 从旧引用更改方法

c# - 有没有一种简单的方法可以将一个 IList<MyType> 附加到另一个?

.net - 用于 .NET 的轻量级 x86 模拟器/在托管环境中执行 x86 代码

linux - iozone 什么是记录大小/记录长度?

C# 静态数据库类?

c# - 在 WPF C# 中使用数据绑定(bind)更改组合框的选定索引

c# - 从 Windows Phone 7 中的麦克风获取数据文件

c# - json 错误错误的 JSON 转义序列

linux - autoenv 不适用于 Windows 7

java - Windows 上的多个 java 版本