【问题标题】:Where can I store executable code downloaded from a site and run it?我在哪里可以存储从站点下载的可执行代码并运行它?
【发布时间】:2009-11-11 15:20:49
【问题描述】:

在我的 C# 应用程序中,如果我希望能够从我们的网站下载“加载项”并将其存储在本地用户的计算机上,然后运行它(假设它是一个程序集 DLL 或 EXE,不问题),我假设我不能将它存储在我的 Program Files 文件夹的子目录中,因为加载项是特定于用户的,所以这不是它的正确位置。我应该将这些存储在哪里,我可能会遇到哪些类型的信任/安全问题?

【问题讨论】:

  • 只要确保您下载的任何代码在运行前都经过您的数字签名,否则您的用户将面临许多风险,例如有人入侵您的网站或攻击您的用户 DNS 服务器让您的软件从错误的站点下载文件(还有更多风险)。
  • @Nir:如果我正在编写自己的加载项,这很容易,但如果我想允许第 3 方加载项,我还需要签署他们的所有密钥吗?

标签: c# directory add-in


【解决方案1】:

当前用户的应用程序数据目录将是存储它们的一个地方。

string basePath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
basePath = System.IO.Path.Combine(basePath, "MyProgram");
if (!Directory.Exists(basePath))
  Directory.CreateDirectory(basePath);

在安装后尝试在程序文件中写入任何内容将在 Vista、Windows 2008 服务器、Windows 7 及更高版本中遇到问题。当然,除非您的应用程序需要提升。您还提到您的文件是每个用户特定的。

【讨论】:

    【解决方案2】:

    使用 .NET 中提供的 IsolatedStorage 类来存储用户特定的东西。

    更多信息:Working with Isolated Storage in .NET

    【讨论】:

    • 有人想说明为什么这种方法比 Brian 的方法更好或更差吗?
    • 斯科特,这并没有太大的不同。我认为存储位置与布赖恩回答中使用的位置略有不同。通常,根据我为用户/应用程序特定数据阅读的 .NET 书籍推荐它。根据部署的系统,如果您遇到使用 Brian 的方法可能不会遇到的问题,您可以通过 CAS 来允许特权使用 IsolatedStorage。
    • 据此:stackoverflow.com/questions/882490/…isolatedstorage 无论如何都在 ApplicationData 文件夹内,所以我认为这是更好的答案。
    猜你喜欢
    • 1970-01-01
    • 2023-03-10
    • 1970-01-01
    • 2011-05-28
    • 1970-01-01
    • 2021-01-12
    • 2018-12-21
    • 2011-09-15
    • 1970-01-01
    相关资源
    最近更新 更多