将数据库永久添加到应用程序C#
我正在尝试创建将计算机添加到Active Directory域的软件。我需要满足的一个标准是必须将机器添加到适当的OU。为了做到这一点,我有一个带有地址的站点位置列表(这是我们确定OU的方式)。此列表当前以ACCDB文件的形式存在,我希望将其包含在应用程序中,因为访问列表不会更改 我看到的所有内容都希望将DB文件连接到不同的位置,例如服务器或本地计算机上。我的首选是将DB文件用作引用或程序的.exe文件本身中的某些内容。我可能错过了一些非常明显的东西,但这已经困扰了我好几天了,所以我正在寻求帮助将数据库永久添加到应用程序C#,c#,ms-access,embedded-resource,C#,Ms Access,Embedded Resource,我正在尝试创建将计算机添加到Active Directory域的软件。我需要满足的一个标准是必须将机器添加到适当的OU。为了做到这一点,我有一个带有地址的站点位置列表(这是我们确定OU的方式)。此列表当前以ACCDB文件的形式存在,我希望将其包含在应用程序中,因为访问列表不会更改 我看到的所有内容都希望将DB文件连接到不同的位置,例如服务器或本地计算机上。我的首选是将DB文件用作引用或程序的.exe文件本身中的某些内容。我可能错过了一些非常明显的东西,但这已经困扰了我好几天了,所以我正在寻求帮助
为了澄清,此软件必须是独立的(无安装程序)。它还必须能够确定加入域的适当OU(在PC加入域之前,无法访问共享)。它还必须具有足够的用户友好性,以避免出现错误,这意味着我希望避免复制和分发多个必须放在正确位置的文件。这就是为什么我想将ACCDB文件嵌入到应用程序中以供动态使用。因为这是静态数据,所以事情变得容易多了。您不必担心持久化此数据、回收对程序的更改或用户意外删除某些内容等问题。您只需在应用程序中使用。在链接中,按照使用图像文件的示例进行操作。文本文件示例将损坏您的数据库 然而,这样做仍然有一个诀窍。问题是Windows附带的Access引擎无法将数据库作为资源打开,因此您需要将此文件保存到本地硬盘。好消息是它并没有看起来那么糟糕,因为您的程序可以根据需要执行此操作,并确保它是正确的,而不是要求用户将文件放在特定的位置 至于在提取文件时将其放在何处。。。最安全和最好的地方是应用程序数据文件夹。通过检查此调用的结果,可以轻松获取此文件夹的路径:
Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)
这将为您提供一个路径,在该路径中,标准特权用户确实具有写访问权限,而不管是哪个用户
总之:
环境
对象获取应用程序数据路径FileStream
,根据#2的路径写入文件和使用块一样简单
缺点是聪明的用户可能会操纵数据库,最终导致不希望的OU。如果你需要担心这个问题,你应该考虑让程序检查一个Web服务,而不是使用嵌入式数据。您嵌入的任何内容最终都可以由最终用户更改。web服务也很好,因为您可以随着组织的发展更新映射数据,而无需重建或重新分发程序。您的问题不清楚。如果您只是编写一个供自己使用的应用程序,请将数据库放在一个文件夹中,并从软件中引用它。如果您正在向其他人部署(分发)应用程序,请将DB放入安装程序中,并与应用程序一起安装。在这两种情况下,由于您声明访问列表不会更改,因此您的问题就解决了。如果这两个都不能回答你的问题,那就把你的问题说得更清楚。这是一个很好的想法,我没有想到。谢谢你让我注意到它。我完全同意聪明的用户。这就是为什么DB文件中只包含位置信息(地理位置)。确定OU的实际逻辑将在软件中,因为我需要在命令中将该信息用作变量,以将系统添加到AD。非常感谢您抽出时间回答此问题,谢谢!