小编mzi*_*mzi的帖子

如何修改exe文件以强制它在没有源代码的情况下以管理员身份启动

我不久前开发了一个视频游戏,当时WinXP是当前的Windows版本.如果游戏尚未存在,游戏需要将自己的字体安装到系统中.我不记得我在代码中究竟是怎么做的,我想我要么使用特定的WinAPI函数,要么只是将字体文件复制到Fonts文件夹中 - 无论哪种方式,它当时都运行正常.

但是,当有人在Win7上运行游戏时,除非用户以管理员身份运行,否则游戏无法安装该字体.游戏有效,但使用了可怕的默认字体,结果用户甚至没有意识到出错了,只是认为游戏看起来很糟糕.

所以我需要的是使exe文件始终要求以管理员身份运行.我可以重新编译游戏并设置构建,以便exe文件总是要求管理员权限,但我没有一些我已经使用过的SDK,因此重建可能会有些困难.

所以我想做的是:我可以在没有源代码的情况下以某种方式简单地修改.exe文件,以便始终要求以管理员身份运行吗?

我发现我需要把它放在清单中:

<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
Run Code Online (Sandbox Code Playgroud)

但我可以编辑一个exe文件的清单吗?我曾经尝试过使用XN资源编辑器来处理资源,但似乎无法编辑清单.

是否有可能做到这一点?

谢谢.

windows administrator manifest

3
推荐指数
1
解决办法
7550
查看次数

如何使用Linq过滤Application.OpenForms集合?

我想用Linq Where来过滤这个Application.OpenForms集合,这个网站上的几个问题 [1] [2] [3]表明,为了做到这一点,我需要的只是访问它的AllKeys属性.但是,即使我创建一个新的Windows窗体应用程序,该集合似乎根本没有此属性,并且在我尝试使用它时不会编译.可能是什么原因?

c# linq

3
推荐指数
1
解决办法
1503
查看次数

如何确保进程仍在运行以便我可以杀死它?

我有一个Process 我想要的Kill; 然而,有时会产生InvalidOperationException说已经退出的过程.

为了防止异常,我试图检查进程是否退出:

if (!p.HasExited)
{
    p.Kill();
}
Run Code Online (Sandbox Code Playgroud)

但是,我偶尔也会看到异常.由于该进程与我的代码并行运行,我认为问题可能基本上是竞争条件,即进程在检查和Kill()调用之间终止.

在不提出上述异常的情况下杀死进程的正确方法是什么?当然,我可以尝试 - 捕捉有问题的代码,但这似乎不是解决这个问题的最佳方法.

c# windows

2
推荐指数
1
解决办法
92
查看次数

是否有必要#include <exception>,当我似乎能够使用std :: exception时,即使它不包括在内?

我可能忽略了一些简单的东西,但这让我很难过:为什么这个代码实际编译,至少在MS Visual Studio 2012中,即使<exception>不包括在内?它隐含地以某种方式包括在内吗?这在某种程度上与IDE有关吗?我应该包括它,为什么?

#include <iostream>

int main(int argc, char* args[])
{
    try 
    {
        throw std::exception("THIS HAS FAILED SPECTACULARLY");
    }
    catch (std::exception& e)
    {
        std::cout << "Exception occured:\n";
        std::cout << e.what() << '\n';
    }

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c++

1
推荐指数
1
解决办法
56
查看次数

标签 统计

c# ×2

windows ×2

administrator ×1

c++ ×1

linq ×1

manifest ×1