我们可以获得分辨率和屏幕的东西Screen。所以,如果我们想在屏幕中央放置一些东西,我们应该使用Screen.WorkingArea.Widthand Screen.WorkingArea.Height。
但是,在 Windows 8.1(不确定其他操作系统)中,如果项目看起来太小,则可以在屏幕上缩放项目。您可以通过调用桌面上的上下文菜单来检查它,选择“屏幕分辨率”,然后选择“放大或缩小文本和其他项目”。
问题是,它似乎确实提高了屏幕分辨率!所以,Screen.WorkingArea.Width和Screen.WorkingArea.Height给你换算值,并指向Screen.WorkingArea.Width/2 Screen.WorkingArea.Height/2将在实际屏幕的中心不再是(200%缩放这点将在屏幕的右下角)。这可能会破坏 UI 项目的大量放置。
那么,是否有可能获得缩放的价值?我找不到任何包含此信息的类。
我有一些功能,这取决于命令行参数,不同的参数应该导致不同的结果。
我不能直接“模拟”这个参数,因为有某种链依赖关系 - 我需要对一些 xaml 控件进行单元测试,它依赖于视图模型,它依赖于某些附加类,它使用获取命令行参数Environment.GetCommandLineArgs,我不能直接影响最后一个类来手动设置参数而不是使用GetCommandLineArgs.
所以,我想知道Environment.GetCommandLineArgs,对于某些单元测试,有没有办法让我希望它返回返回值。
我想从每个设备的自签名证书切换到一对证书,其中一个是以前生成的,放置在受信任的根证书颁发机构存储中,对所有设备都相同,并作为第二个证书的根 CA 工作,该证书是按设备,并放置在个人存储中。
我不想使用 makecert,因为创建签名证书会显示 UI,这是我想避免的。此外,由于某些与许可证相关的内容(尽管我有可用的解决方案),因此无法使用 OpenSSL。所以,现在我正在使用基于 CertEnroll 库的小型 C# 工具。
这就是我为第一个根 CA 证书创建 pfx 的方式。
makecert -n "CN=Root CA" -cy authority -r -a sha256 -len 2048 -sv root.pvk root.cer
pvk2pfx -pvk root.pvk -spc root.cer -pfx root.pfx -pi 123 -po 123
Run Code Online (Sandbox Code Playgroud)
要从 C# 代码创建证书,我参考了问题如何以编程方式为 WCF 服务创建自签名证书?和C# 使用 certenroll.dll 生成一个没有 CA 的非自签名客户端 CX509Certificate 请求。
到目前为止,我有以下代码。证书生成方法:
/// <summary>
/// Generates self-signed certificate with specified subject, which will expire after specified timespan.
/// </summary>
public X509Certificate2 CreateCertificate(string subjectName, TimeSpan …Run Code Online (Sandbox Code Playgroud) 我可以找到某个实际的订单,在卸载期间执行哪些事件和部分?例如,是否UninstallDelete会比usPostUninstall卸载步骤更早出现?
Inno Setup在手册中有"安装顺序"一文,但它看起来更像是编译顺序,而不是执行.
为了确定,如果PC没有使用一段时间,我正在使用 Win32API.GetLastInputTime()方法.我只是从DateTime.Now中减去它的值,并将它与存储在设置中的某个值进行比较.
它以前工作得很好,但最近GetLastInputTime开始显示完全荒谬的结果 - 它显示了我未来的时间.今天它向我展示了2016年7月2日.
那么,有没有人有任何想法,发生了什么?如何GetLastInputTime获得时间,以及如何可能,这一次是未来的?
有时,我的应用程序的某些文件被某些进程使用。例如,用户打开应用程序日志或类似的日志,而忘记关闭它。这在安装/升级/卸载时会导致一些错误。在这种情况下,我想找出正在使用文件的进程,并向用户显示一条消息,指出已使用文件。
是否可以在Inno Setup中找出原因,哪个过程阻止脚本修改文件?至少当我在“代码”部分中尝试执行此操作时。