C#管理员权限问题

时间:2014-01-22 18:44:42

标签: 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 :(得分:0)

如果您检查任务管理器,您将看到游戏仍以另一个用户身份运行,即管理员。这很可能意味着游戏会在用户配置文件中保存一些信息,例如AppSettings(如配置文件中的热键)或存储在AppData中的游戏修改,这可能会导致您提到的问题。

“重新运行”您的程序的用户仍然是提升用户,虽然权限较少,并且该用户启动游戏。你不能正确“无人值守”一个过程到OS认为它作为登录用户运行的点,所以你将不得不做其他事情。

您可以查看是否可以将特定于用户的资源移动到相对于游戏而非用户的路径,或者通过任何其他方式(但直接从您的方式)启动该过程,例如使用计划任务。

但为什么不更新existing question

相关问题