2014-01-22 156 views
0

我試圖製作一個連接到遊戲的程序(「快速連接」)。C#管理權限問題

當我以管理員身份啓動應用程序並連接到遊戲時,它有奇怪的問題(例如,快捷鍵不響應遊戲鍵和遊戲不加載某些模型文件),但是當我開始時沒有管理員權限它工作正常,但我需要其他用途(文件操作)的管理員權限。

我試圖用runas命令行命令重新運行程序,該應用程序沒有管理權限,但遊戲仍然無法正常工作。

// OnClick event 
ProcessStartInfo proc = new ProcessStartInfo("cmd.exe", "/c runas /trustlevel:0x20000 \"myapp.exe rerun\""); 
proc.WorkingDirectory = Application.StartupPath; 
proc.CreateNoWindow = true; 
proc.UseShellExecute = false; 
Process.Start(proc); 

// Program.cs 
if(!admin && args[0].Equals("rerun")) 
{ 
    ProcessStartInfo proc = new ProcessStartInfo("cmd.exe", "/c game.exe ipAndPortToConnect"); 
    proc.WorkingDirectory = Application.StartupPath; 
    proc.CreateNoWindow = true; 
    proc.UseShellExecute = false; 
    Process.Start(proc); 
} 

我嘗試了很多組合,但都沒有工作。

我無法弄清楚什麼是地獄導致它...

+1

什麼是奇怪的問題? –

+0

對不起,我忘了寫。快捷鍵不會響應遊戲鍵,遊戲不會加載某些模型文件。 – Chris

+0

你在什麼操作系統下運行? Windows 7和Windows 8可能需要對某些功能進行應用程序簽名。 – Codeman

回答

0

如果您檢查任務管理器,你會看到遊戲仍然運行作爲不同的用戶,即管理員。這很可能意味着遊戲會在用戶配置文件中保存一些信息,例如在AppSettings(如配置文件中的熱鍵)下,或存儲在AppData中的遊戲修改,這可能會導致您提到的問題。

重新運行程序的用戶仍然是高架用戶,儘管權限較小,並且該用戶啓動了該遊戲。您不能「正確地」將進程「正確地」卸載到操作系統認爲它以登錄用戶身份運行的地步,因此您必須執行其他操作。

您可以查看是否可以將用戶特定的資源移動到相對於遊戲的路徑而不是用戶,也可以通過任何其他方式而不是直接從您的方式啓動進程,例如使用計劃任務。

但爲什麼你沒有更新你的existing question

+0

哦,我明白了,如何才能將流程所有者更改爲用戶? – Chris

+0

你不能,請閱讀第二段。 – CodeCaster

+1

奧基,順便說一句,謝謝。 – Chris