【发布时间】:2021-10-25 15:12:07
【问题描述】:
我正在创建一个有点愚蠢的服务作为一个笑话,应该在桌面上创建一个“无敌”的 txt,如果删除它会重新创建。 它在调试时可以工作,但是当我安装服务时它不会创建 txt。
我有:
- 添加以下代码行以管理员权限执行服务:
<PermissionSet class="System.Security.PermissionSet" version="1" Unrestricted="true" ID="Custom" SameSite="site" />到 app.manifest)。 - 我检查了服务属性上的“授权与桌面交互”复选标记。
当我调试(我使用 Topshelf)时,代码可以工作,但是当我安装服务时,它就不起作用了。
创建 txt(和构造函数)的代码:
public Invincible()
{
_timer = new Timer(3000) { AutoReset = true };
_timer.Elapsed += TimerElapsed;
}
private void TimerElapsed(object sender, ElapsedEventArgs e)
{
string[] frase = new string[] {"NON PUOI RIMUOVERE QUESTA MALEDIZIONE <3"};
string curFile = Environment.GetFolderPath(Environment.SpecialFolder.Desktop)+"/Invincible_Curse.txt";
string curFile2 = "C:/temp/Demos/Invincible_Curse.txt";
if (!File.Exists(curFile))
{
File.AppendAllLines(curFile, frase);
}
}
主要:
static void Main(string[] args)
{
var exitCode = HostFactory.Run(x =>
{
x.Service<Invincible>(s =>
{
s.ConstructUsing(Invincible => new Invincible());
s.WhenStarted(Invincible => Invincible.Start());
s.WhenStopped(Invincible => Invincible.Stop());
x.SetServiceName("InvincibleService");
x.SetDisplayName("Invincible Service");
x.SetDescription("Cerca di sopravvivere");
});
});
int exitCodeValue = (int)Convert.ChangeType(exitCode, exitCode.GetTypeCode());
Environment.ExitCode = exitCodeValue;
}
感谢您的帮助。
【问题讨论】:
-
你是指任务计划器中的任务还是windows服务?并请解释“不起作用”。
-
这里需要粘贴代码。尝试创建 txt 文件的部分。
-
@Koray 我更新了帖子,谢谢。
-
@Steeve 这是一个 Windows 服务。 With doesn't work 我的意思是它没有按预期创建 txt,我很难弄清楚问题出在哪里,因为当我调试它时它确实有效。谢谢。
标签: c# windows-services