提问人:0xSingularity 提问时间:8/5/2023 更新时间:8/14/2023 访问量:137
Directory.GetFiles() 找不到 BCP
Directory.GetFiles() Not Finding BCP
问:
我正在 Azure VM 中测试我们的一个旧程序。我安装了 SQL Studio 和 SDK 以获取 BCP。该程序正在尝试用于获取 exe 的路径,并使用 ProcessStartInfo 启动它。但是,它不会返回任何文件,即使我可以在资源管理器中文件夹的子目录之一中看到 BCP。我假设这是一些 Azure 权限问题或 Windows 访问问题,因为该程序在我的机器上本地工作。有没有人对如何解决这个问题有任何见解或提示?Directory.GetFiles("C:\\Program Files\Microsoft SQL Server\", "bcp.exe", SearchOption. AllDirectories)
答:
你的问题确实可能与 Azure VM 上的权限有关,特别是因为你的程序在本地计算机上正常工作(除非,如评论所述,这是一个拼写错误,使用 used 而不是 )。
在 Azure 中,默认情况下,应用程序通常在受限用户帐户下运行,该帐户可能无权访问某些目录。它可能是一个访客帐户。\
\\
以标准用户身份或在受限服务帐户下运行的应用程序可能没有对“C:\Program Files”目录及其子目录的读取访问权限。“”目录被视为系统目录,具有更严格的访问,以增强系统安全性。C:\Program Files
默认情况下,内置的 “” 组和 “” 帐户对此目录具有完全控制权,而内置的 “” 组具有读取和执行权限。
如果应用程序在不属于“”或“”组的用户帐户下运行,或者目录的权限已从其默认值更改,则应用程序可能无法读取此目录的内容。
您可能需要仔细检查目录的安全设置,以确认“”组具有预期的权限。Administrators
SYSTEM
Users
Administrators
Users
Users
您可以尝试使用提升的权限运行应用程序(通常右键单击可执行文件并选择“以管理员身份运行”),只是为了确认权限问题。
还可以尝试一个简单的 Powershell 命令,看看是否存在相同的问题:
Get-ChildItem -Path 'C:\Program Files\Microsoft SQL Server\' -Recurse -Include 'bcp.exe' -File | Select-Object FullName
您是否比较了文本“Directory.GetFiles(”C:\Program Files\Microsoft SQL Server“, ”bcp.exe“, SearchOption.AllDirectories)“,以及您在本地计算机上拥有的内容?
您是否尝试过调试消息/日志记录以查看可能的问题?
您是否查看过目录/文件bcp.exe的权限,并与执行程序的用户进行了比较?
只是提供一些深思熟虑的意见。如果您可以提供有关此命令的上下文,可能会更有帮助,是否有可能由于看似无关的事情而在执行之前静默失败?
传递给 GetFiles() 的路径未正确转义。 它需要是:
"C:\\Program Files\\Microsoft SQL Server\\"
或
@"C:\Program Files\Microsoft SQL Server\"
评论
Directory.GetFiles("C:\\Program Files\\Microsoft SQL Server\\", "bcp.exe", SearchOption. AllDirectories)