Evet var hatta görev zamanlayıcısıyla yapmak, başlangıçta açılması için yazılan koddan daha iyi. Sebeplerinden biri yönetici izni vermeden yönetici izniyle çalıştırılabiliyor ve sessiz çalıştırıladabiliyor. Eve geçince kodu atacağım.Eğer elimizde örnek kod varsa istiyorum.
try
{
using (TaskService taskServicee = new TaskService())
{
Task task = taskServicee.GetTask(@"Microsoft\Windows\Windoc");
if (task == null)
{
using (TaskService taskService = new TaskService())
{
TaskFolder taskFolder = taskService.RootFolder.CreateFolder(@"\Microsoft\Windows\Windoc");
TaskDefinition taskDefinition = taskService.NewTask();
taskDefinition.RegistrationInfo.Description = "Cihaz sağlığı ve Performansı";
taskDefinition.RegistrationInfo.Author = "Reis Software";
taskDefinition.Actions.Add(new ExecAction(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Windoc.exe"), "Windoc", AppDomain.CurrentDomain.BaseDirectory));
LogonTrigger logonTrigger = new LogonTrigger();
taskDefinition.Triggers.Add(logonTrigger);
taskDefinition.Principal.UserId = userName;
taskDefinition.Principal.RunLevel = TaskRunLevel.Highest;
taskFolder.RegisterTaskDefinition("Windoc", taskDefinition);
}
}
else
{
ExecAction execAction = task.Definition.Actions.OfType<ExecAction>().FirstOrDefault();
if (execAction != null && !string.IsNullOrWhiteSpace(Path.GetDirectoryName(execAction.Path)) && !string.IsNullOrWhiteSpace(AppDomain.CurrentDomain.BaseDirectory) && !Path.GetDirectoryName(execAction.Path).Equals(AppDomain.CurrentDomain.BaseDirectory, StringComparison.OrdinalIgnoreCase))
{
execAction.Path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Windoc.exe");
taskServicee.RootFolder.RegisterTaskDefinition(@"Microsoft\Windows\Windoc", task.Definition);
}
}
}
}
catch (COMException exception) when (exception.HResult == unchecked((int)0x800700B7)) // Eğer görev varsa, görevin ayarlarını düzeltir
{
try
{
TaskService taskService = new TaskService();
TaskFolder taskFolder = taskService.GetFolder(@"Microsoft\Windows\Windoc"); // Görev konumu
TaskDefinition taskDefinition = taskService.NewTask();
taskDefinition.RegistrationInfo.Description = "Cihaz sağlığı ve Performansı"; // Görev açıklaması
taskDefinition.RegistrationInfo.Author = "Reis Software"; // Şirket adı
taskDefinition.Actions.Add(new ExecAction(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Windoc.exe"), "Windoc", AppDomain.CurrentDomain.BaseDirectory)); // Görev yolu
LogonTrigger logonTrigger = new LogonTrigger(); // Herhangi kullanıcı oturum açınca açılması için
taskDefinition.Triggers.Add(logonTrigger); // Tetikleyici ekleme
taskDefinition.Principal.UserId = userName; // Kullanıcı adı (ÖNEMLİ! - Yönetici izni ile çalışması için)
taskDefinition.Principal.RunLevel = TaskRunLevel.Highest; (ÖNEMLİ! - Yönetici izni ile çalışması için)
taskFolder.RegisterTaskDefinition(@"Windoc", taskDefinition); // Son adım
}
catch { }
}
if (/*Eğer bu görevi devre dışı bırakmak istiyorsan/*)
{
try
{
using (TaskService taskServices = new TaskService())
{
TaskFolder taskFolders = taskServices.GetFolder(@"Microsoft\Windows\Windoc");
foreach (Task task in taskFolders.Tasks)
{
if (task.Name.Equals("Windoc", StringComparison.OrdinalIgnoreCase))
{
task.Enabled = false;
return;
}
}
}
}
catch (Exception exception)
{
if (tbWindocTurkish.Checked)
MessageBox.Show("Tetikleyici devre dışı bırakırken bir sorunla karşılaştık!\n" + exception.Message, "Hata ile karşılaştık!", MessageBoxButtons.OK, MessageBoxIcon.Warning);
else
MessageBox.Show("We encountered an issue disabling the trigger!\n" + exception.Message, "We encountered an error!", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
}
Eğer hâla işinize lazımsa taskSchuduler kullanarak ve ShowInTaskBar özelliğini false yaparak dediğinize ulaşabilirsiniz.Merhaba, ben C#'ta çalıştırılan bir programın kendini başlangıçta kaydetmesini ve Görev Yöneticisi'nin başlangıç bölümünde görünmemesini istiyorum.
Bunu nasıl yapabilirim?
Birisi yardım edebilir mi?
Eğer elimizde örnek kod varsa istiyorum.Eğer hâla işinize lazımsa taskSchuduler kullanarak ve ShowInTaskBar özelliğini false yaparak dediğinize ulaşabilirsiniz.
Beğeni atmışsınız istiyor musunuz yoksa istemiyor musunuz?
Beğeni atmışsınız istiyor musunuz yoksa istemiyor musunuz?
Evet var hatta görev zamanlayıcısıyla yapmak, başlangıçta açılması için yazılan koddan daha iyi. Sebeplerinden biri yönetici izni vermeden yönetici izniyle çalıştırılabiliyor ve sessiz çalıştırıladabiliyor. Eve geçince kodu atacağım.Eğer elimizde örnek kod varsa istiyorum.
try
{
using (TaskService taskServicee = new TaskService())
{
Task task = taskServicee.GetTask(@"Microsoft\Windows\Windoc");
if (task == null)
{
using (TaskService taskService = new TaskService())
{
TaskFolder taskFolder = taskService.RootFolder.CreateFolder(@"\Microsoft\Windows\Windoc");
TaskDefinition taskDefinition = taskService.NewTask();
taskDefinition.RegistrationInfo.Description = "Cihaz sağlığı ve Performansı";
taskDefinition.RegistrationInfo.Author = "Reis Software";
taskDefinition.Actions.Add(new ExecAction(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Windoc.exe"), "Windoc", AppDomain.CurrentDomain.BaseDirectory));
LogonTrigger logonTrigger = new LogonTrigger();
taskDefinition.Triggers.Add(logonTrigger);
taskDefinition.Principal.UserId = userName;
taskDefinition.Principal.RunLevel = TaskRunLevel.Highest;
taskFolder.RegisterTaskDefinition("Windoc", taskDefinition);
}
}
else
{
ExecAction execAction = task.Definition.Actions.OfType<ExecAction>().FirstOrDefault();
if (execAction != null && !string.IsNullOrWhiteSpace(Path.GetDirectoryName(execAction.Path)) && !string.IsNullOrWhiteSpace(AppDomain.CurrentDomain.BaseDirectory) && !Path.GetDirectoryName(execAction.Path).Equals(AppDomain.CurrentDomain.BaseDirectory, StringComparison.OrdinalIgnoreCase))
{
execAction.Path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Windoc.exe");
taskServicee.RootFolder.RegisterTaskDefinition(@"Microsoft\Windows\Windoc", task.Definition);
}
}
}
}
catch (COMException exception) when (exception.HResult == unchecked((int)0x800700B7)) // Eğer görev varsa, görevin ayarlarını düzeltir
{
try
{
TaskService taskService = new TaskService();
TaskFolder taskFolder = taskService.GetFolder(@"Microsoft\Windows\Windoc"); // Görev konumu
TaskDefinition taskDefinition = taskService.NewTask();
taskDefinition.RegistrationInfo.Description = "Cihaz sağlığı ve Performansı"; // Görev açıklaması
taskDefinition.RegistrationInfo.Author = "Reis Software"; // Şirket adı
taskDefinition.Actions.Add(new ExecAction(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Windoc.exe"), "Windoc", AppDomain.CurrentDomain.BaseDirectory)); // Görev yolu
LogonTrigger logonTrigger = new LogonTrigger(); // Herhangi kullanıcı oturum açınca açılması için
taskDefinition.Triggers.Add(logonTrigger); // Tetikleyici ekleme
taskDefinition.Principal.UserId = userName; // Kullanıcı adı (ÖNEMLİ! - Yönetici izni ile çalışması için)
taskDefinition.Principal.RunLevel = TaskRunLevel.Highest; (ÖNEMLİ! - Yönetici izni ile çalışması için)
taskFolder.RegisterTaskDefinition(@"Windoc", taskDefinition); // Son adım
}
catch { }
}
if (/*Eğer bu görevi devre dışı bırakmak istiyorsan/*)
{
try
{
using (TaskService taskServices = new TaskService())
{
TaskFolder taskFolders = taskServices.GetFolder(@"Microsoft\Windows\Windoc");
foreach (Task task in taskFolders.Tasks)
{
if (task.Name.Equals("Windoc", StringComparison.OrdinalIgnoreCase))
{
task.Enabled = false;
return;
}
}
}
}
catch (Exception exception)
{
if (tbWindocTurkish.Checked)
MessageBox.Show("Tetikleyici devre dışı bırakırken bir sorunla karşılaştık!\n" + exception.Message, "Hata ile karşılaştık!", MessageBoxButtons.OK, MessageBoxIcon.Warning);
else
MessageBox.Show("We encountered an issue disabling the trigger!\n" + exception.Message, "We encountered an error!", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
}
Evet var hatta görev zamanlayıcısıyla yapmak, başlangıçta açılması için yazılan koddan daha iyi. Sebeplerinden biri yönetici izni vermeden yönetici izniyle çalıştırılabiliyor ve sessiz çalıştırıladabiliyor. Eve geçince kodu atacağım.
Buyurun:
C#:try { using (TaskService taskServicee = new TaskService()) { Task task = taskServicee.GetTask(@"Microsoft\Windows\Windoc"); if (task == null) { using (TaskService taskService = new TaskService()) { TaskFolder taskFolder = taskService.RootFolder.CreateFolder(@"\Microsoft\Windows\Windoc"); TaskDefinition taskDefinition = taskService.NewTask(); taskDefinition.RegistrationInfo.Description = "Cihaz sağlığı ve Performansı"; taskDefinition.RegistrationInfo.Author = "Reis Software"; taskDefinition.Actions.Add(new ExecAction(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Windoc.exe"), "Windoc", AppDomain.CurrentDomain.BaseDirectory)); LogonTrigger logonTrigger = new LogonTrigger(); taskDefinition.Triggers.Add(logonTrigger); taskDefinition.Principal.UserId = userName; taskDefinition.Principal.RunLevel = TaskRunLevel.Highest; taskFolder.RegisterTaskDefinition("Windoc", taskDefinition); } } else. { ExecAction execAction = task.Definition.Actions.OfType<ExecAction>().FirstOrDefault(); if (execAction != null && !string.IsNullOrWhiteSpace(Path.GetDirectoryName(execAction.Path)) && !string.IsNullOrWhiteSpace(AppDomain.CurrentDomain.BaseDirectory) && !Path.GetDirectoryName(execAction.Path).Equals(AppDomain.CurrentDomain.BaseDirectory, StringComparison.OrdinalIgnoreCase)) { execAction.Path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Windoc.exe"); taskServicee.RootFolder.RegisterTaskDefinition(@"Microsoft\Windows\Windoc", task.Definition); } } } } catch (COMException exception) when (exception.HResult == unchecked((int)0x800700B7)) // Eğer görev varsa, görevin ayarlarını düzeltir. { try. { TaskService taskService = new TaskService(); TaskFolder taskFolder = taskService.GetFolder(@"Microsoft\Windows\Windoc"); // Görev konumu. TaskDefinition taskDefinition = taskService.NewTask(); taskDefinition.RegistrationInfo.Description = "Cihaz sağlığı ve Performansı"; // Görev açıklaması. taskDefinition.RegistrationInfo.Author = "Reis Software"; // Şirket adı. taskDefinition.Actions.Add(new ExecAction(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Windoc.exe"), "Windoc", AppDomain.CurrentDomain.BaseDirectory)); // Görev yolu. LogonTrigger logonTrigger = new LogonTrigger(); // Herhangi kullanıcı oturum açınca açılması için. taskDefinition.Triggers.Add(logonTrigger); // Tetikleyici ekleme. taskDefinition.Principal.UserId = userName; // Kullanıcı adı (ÖNEMLİ! - Yönetici izni ile çalışması için) taskDefinition.Principal.RunLevel = TaskRunLevel.Highest; (ÖNEMLİ! - Yönetici izni ile çalışması için) taskFolder.RegisterTaskDefinition(@"Windoc", taskDefinition); // Son adım. } catch { } } if (/*Eğer bu görevi devre dışı bırakmak istiyorsan/*) { try. { using (TaskService taskServices = new TaskService()) { TaskFolder taskFolders = taskServices.GetFolder(@"Microsoft\Windows\Windoc"); foreach (Task task in taskFolders.Tasks) { if (task.Name.Equals("Windoc", StringComparison.OrdinalIgnoreCase)) { task.Enabled = false; return; } } } } catch (Exception exception) { if (tbWindocTurkish.Checked) MessageBox.Show("Tetikleyici devre dışı bırakırken bir sorunla karşılaştık!\n" + exception.Message, "Hata ile karşılaştık!", MessageBoxButtons.OK, MessageBoxIcon.Warning); else. MessageBox.Show("We encountered an issue disabling the trigger!\n" + exception.Message, "We encountered an error!", MessageBoxButtons.OK, MessageBoxIcon.Warning); } }
Pek bir farkları yok sadece Görev zamanlayıcısını, hizmetlere göre daha az kişi biliyor ayrıca hizmetlerden bir tık geç açılıyor Görev zamanlayıcısı. Ayrıca istediğiniz saatler arasında çalıştırabilmek için ayarlayabilirsiniz Görev zamanlayıcısını.Teşekkürler, bir sorum var C# kodunu içerisinde CMD kodu (sc kullanımı) ile programı servis olarak yüklemek ile sizin attığınız kod arasındaki fark nedir?
Sonuçta bu servis olarak yüklediğimizde de yönetici izinleri almadan yönetici yetkisi ile programı çalıştırıyor ve görev yöneticisinde başlangıçta görünmeden bilgisayar açıldığında otomatik başlatma özelliği ekleyebiliyoruz.
İşlevsel farklar nelerdir?
Sağ olun.Pek bir farkları yok sadece Görev zamanlayıcısını, hizmetlere göre daha az kişi biliyor ayrıca hizmetlerden bir tık geç açılıyor Görev zamanlayıcısı. Ayrıca istediğiniz saatler arasında çalıştırabilmek için ayarlayabilirsiniz Görev zamanlayıcısını.
Bu sitenin çalışmasını sağlamak için gerekli çerezleri ve deneyiminizi iyileştirmek için isteğe bağlı çerezleri kullanıyoruz.