2012-12-19 26 views
10

Aynı anda kulaklığımda & Hoparlörlerim aracılığıyla ses çalmamı sağlayan bir Ses Tekrarlayıcı uygulaması çalıştırıyorum. Uygulama kendisini "RealTime" olarak ayarlayabilme özelliğine sahiptir, ancak bunu yalnızca Görev Yöneticisi'nde kendim ayarlamam gereken kadar yükseğe ayarlar. Değişiklik İşlem önceliği çalışmıyor

Bu yüzden (ben Bitirdiyseniz bir kez başlatmak için eklersiniz O) benim için süreç önceliğini değiştirecek C# biraz komut

namespace ProcessRealtime 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      Process[] processes = Process.GetProcessesByName("audiorepeater"); 
      foreach (Process proc in processes) 
      { 
       Console.WriteLine("Changing Priority for: "+proc.Id+" To RealTime"); 
       proc.PriorityClass = ProcessPriorityClass.RealTime; 
       if (proc.PriorityClass == ProcessPriorityClass.RealTime) 
       { 
        Console.WriteLine("Worked"); 
       } 
      } 
      Console.ReadLine(); 
     } 
    } 
} 

sorun olduğunu yazdı otomatikleştirmek için karar Değişiklikleri uygulamıyor. Screenshot of Desktop

Bunun neden işe yaramayacağını bilen var mı?

+2

Umm, bir Yöneticisi olarak program çalıştırarak çalışıyor olabilir. Bu bazı durumlarda gerekli olabilir. – FrostyFire

+0

@JABFreeware öğesinin doğru olduğunu belirtebilir. –

+0

@Simon Whitehead Teşekkürler, bir yanıt ekledim – FrostyFire

cevap

8

YOUR komut dosyasını yönetimsel ayrıcalıkla çalıştırmanız gerekir.

+0

Visual Studio'yu yönetici olarak ve normal olarak çalıştırarak bunu Win7'de test ettim. Yönetici olarak (Yönetici olmayanlar OP'nin konusuna göre sadece Yüksek olarak ayarlanmıştır). –

+0

Görev Yöneticisi, Yönetici'nin Realtime'a yükseltmesini veya soğumasını gerektiriyor gibi görünmediğinden, bana göre bir gözetim oldu. Sadece kullanıcı etkileşimi olmadan çalışmasını sağlamanın bir yolunu bulmanız yeterlidir (Yönetici olarak çalıştırmaya izin vermek). Bir hizmet yapmayı düşünüyordum. –

+0

@OliverBaker Yönetici bir kullanıcıysanız Görev Yöneticisi, UAC isteminde bulunmadan yükseltmek için "saydam bir yükseklik" yapabilir. [Sadece "Microsoft Windows" sertifikası ile imzalanmış bir yazılım bunu yapabilir) (https://technet.microsoft.com/en-us/magazine/2009.07.uac.aspx). –

5

bu deneyin:

using (Process p = Process.GetCurrentProcess()) 
    p.PriorityClass = ProcessPriorityClass.High; 
0

bir yönetici olarak çalıştırmak veya çalıştırmak vermedi Süreci erişim haklarını gerektiğinden UAC kaldırabilirsiniz.

Bu benim için çalışıyor:

using System; 
using System.Collections.Generic; 
using System.Diagnostics; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 

// #define DEBUG 

namespace ProcessRealtime 
{ 
    class PUBG_RealTime 
    { 
     static string processName = "TslGame"; 
     static ProcessPriorityClass newPriority = ProcessPriorityClass.High; 

     static void Main(string[] args) 
     { 
#if DEBUG 
      PutDebug("Start!"); 
#endif 
      Process[] processes = Process.GetProcessesByName(processName); 
#if DEBUG 
      PutDebug(processes.Length + " processed found"); 
#endif 
      foreach (Process proc in processes) 
      { 
#if DEBUG 
       PutDebug("New process found"); 
#endif 
       Console.WriteLine("Changing Priority for id:" + proc.Id + " to " + newPriority.ToString()); 
       proc.PriorityClass = newPriority; 
#if DEBUG 
       PutDebug("Changed priority for " + proc.Id); 
#endif 
      } 
#if DEBUG 
      PutDebug("No more processes.."); 
#endif 
      Console.Write("Press a key, it's over !"); 
      Console.ReadLine(); 
     } 

#if DEBUG 
     static bool debug = true; 
     static int debugInc = 1; 
     static void PutDebug(string info = "") 
     { 
      if(debug){ 
       Console.WriteLine("Debug" + debugInc + ": " + info); 
       debugInc++; 
      } 
     } 
#endif 
    } 
} 
İlgili konular