是否可以在Windows网络中共享Git存储库?
如果我添加位于Windows共享文件夹中的远程源 - 此解决方案是否正常工作?
我有一个网络共享文件夹映射到一个驱动器号,可以从Windows资源管理器,命令提示符以及我的WinForms应用程序访问,没有问题.它也可以使用UNC路径从我的Windows服务访问.
但是,当我尝试使用Windows服务中的映射驱动器号访问此网络位置时,访问失败.Windows服务配置为使用我的个人"登录"帐户凭据,这在上述所有情况下都是相同的.我是管理员.
许多客户站点使用驱动器号来获取网络共享,我无法始终控制它并强制它们指定UNC路径.我需要能够使用Windows服务中的驱动器号访问网络共享.
我需要做什么来设置我的Windows服务,以便它可以访问映射到驱动器号的网络共享文件夹?我的Windows服务是用C#编写的.
我有一个由Windows服务启动的可执行文件,该程序将在客户机器上运行,并且需要连接到远程共享以执行特定任务.此份额由客户通过UI指定,因此我们事先并不知道这意味着它不能"硬编码",或者预先映射共享.
以前我们要求客户登录他们的计算机并在登录时运行可执行文件,但我们一直希望允许我们的程序在服务中运行而不需要登录,主要是为了让客户更容易并防止任何意外注销关闭我们的软件.因此,这也意味着我们不知道客户机器上存在哪些本地用户帐户,因此我们必须使用本地系统帐户启动该服务.
如上所述,我们现在有一个包装器服务来启动可执行文件并执行各种任务.这似乎在大多数情况下都能正常工作并且可以很好地访问底层网络 - 我们的软件目的主要涉及捕获数据包等.
但是,当软件尝试连接到Windows共享(UNC名称)时,它无法连接.如果可执行文件是手动启动的,那么连接正常.
我一般看到解决这类问题的建议似乎都说使用用户帐户,因为系统帐户无法访问网络共享,但在我们的情况下,这是不可能的.有没有其他方法我们可以让这个工作?
编辑:我忘了提到这个应用程序可以(并且最常见的)可以在Win2K而不是XP上运行,我认为我说在XP之前本地网络帐户不可用?
我有一个共享的网络文件夹\\some.domain.net\Shared,其中包含多个共享子文件夹,具有不同用户的不同权限.我希望从同一个Windows帐户打开多个子文件夹的连接,但是使用不同的凭据 - 这是否可以在不必先断开与同一共享的其他连接的情况下进行?
确切地说:在C#方法中,我尝试使用WNetUseConnection()(p/invoke)以下列方式连接到特定的子文件夹:
ConnectToSharedFolder("\\some.domain.net\Shared\Subfolder1", user, password); // calls WNetUseConnection() internally
Run Code Online (Sandbox Code Playgroud)
只要在调用连接到子文件夹时没有与根文件夹(即\\some.domain.net\Shared)或其他共享子文件夹(或通常是任何文件夹\\some.domain.net)建立连接,这就可以正常工作.即,在连接到子文件夹之前,请考虑返回:WNetUseConnection()net use
Status Local Remote
------------------------------------------------
OK \\some.domain.net\Shared
Run Code Online (Sandbox Code Playgroud)
现在我想连接到共享子文件夹\\some.domain.net\Shared\Subfolder1,如本文顶部所示.这将导致Windows错误1219:
Multiple connections to a server or shared resource by the same user, using more than one user name, are not allowed. Disconnect all previous connections to the server or shared resource and try again.
Run Code Online (Sandbox Code Playgroud)
因此,尽管提供了不同的访问凭据,但Windows(Server 2008 R2)似乎并未认识到\\some.domain.net\Shared和之间存在\\some.domain.net\Shared\Subfolder1差异.但是,尝试在使用错误1219的情况下取消连接
WNetCancelConnection2(@"\\some.domain.net\Shared\Subfolder1", …Run Code Online (Sandbox Code Playgroud) 我们软件的用户需要在我们的Java swing应用程序中浏览Windows 10上的网络共享,但是swing的JFileChooser默认情况下不具备此功能.
在这篇相关文章中 如何在JFileChooser中导航到网络主机? 使用ShellFolder(sun私有API)来设置JFileChooser的当前目录是一个不错的解决方案,我们在过去几年中一直使用这种方法进行一些修改而没有任何问题.
public static File getNetworkShareFolder( final File folder ) throws IllegalArgumentException {
final File file = new NonCanonicalizingFile( folder.getPath() );
if( isNetworkShareFolder( file ) ) { // assume Win32ShellFolderManager2 will be present
try {
// JRE-13272 -PRIVATE API that must eventually be swapped for Java 9 alternative
// Using reflection because Win32ShellFolderManager2 may not exist in rt.jar on Linux build server
final Class win32ShellMgr = Class.forName( "sun.awt.shell.Win32ShellFolderManager2" );
// get static creation method from class, …Run Code Online (Sandbox Code Playgroud) 我正在寻找一种方法来读取位于网络共享上的文件的文件内容.我可以使用共享主机的IP地址和共享文件夹到达该位置,但我不知道执行该file_get_contents的正确命令和语法?FOPEN?
$text = fopen('//128.251.xxx.xxx/Common/sample.txt', 'r');
Run Code Online (Sandbox Code Playgroud)
或类似的东西?
更新*我也无法通过浏览器窗口访问该文件,虽然我知道该文件位于该确切的目录中...
我使用Parallels在VM上模拟Windows 8.我将所有开发人员项目存储在Mac的分区上,以简化和连贯.
当我尝试构建运行此网络共享的应用程序(Visual Studio 2012)时,出现以下编译时错误:
Error 1 Error : DEP0700 : Registration of the app failed. Rejecting a request to register from file:///Z:/Users/MY_USER_NAME/Sites/App1/App1/bin/Debug/AppX/AppxManifest.xml because the files are on a network share. Copy the files to the local computer before registering the package. (0x80073cf9) App1
有谁知道如何解决这个问题?我需要告诉Visual Studio 2012我的网络共享是一个受信任的设备,或者至少让它认为项目是在本地驱动器中.无论如何在Windows中创建符号链接?
在Visual Studio 2010中,我解决了此问题,如本网站所述:http://www.sehajpal.com/index.php/2010/10/how-to-solve-loadfromremotesources-error-in-vs-2010/
谢谢您的帮助!
c# network-share virtual-machine visual-studio-2010 visual-studio
当我从网络共享中读取文件时,它会将创建时间更新为上次写入时间.这会导致System.Configuration.Configuration出现问题,因为它认为文件已更改,因此抛出异常(配置文件已被其他程序更改).解决方法是预先手动将创建时间设置为上次写入时间.但我想知道这是否是一个已知问题.
这是一些测试代码:
string filePath = @"X:\SomeFile.txt";
FileInfo fileInfo = new FileInfo(filePath);
DateTime creationTimeBeforeRead = fileInfo.CreationTimeUtc;
FileStream fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.Read);
byte[] result = new byte[fileStream.Length];
fileStream.Read(result, 0, (int)fileStream.Length);
fileStream.Close();
fileInfo.Refresh();
DateTime creationTimeAfterRead = fileInfo.CreationTimeUtc;
Run Code Online (Sandbox Code Playgroud)
我不知道问题是在.net,Windows API还是在服务器端.有没有人有任何见解?
我有一个应用程序,它位于网络共享文件夹中的服务器上.网络中的许多用户可以同时使用该文件.我想执行该EXE文件的更新并执行此操作,我想知道网络中的人(除了我)当前正在使用该文件.
是否可以通过编程方式进行检查?例如:列出现在使用该文件的所有用户名?或至少检索该文件上的锁数?
谢谢.
我正在尝试将本地推送到网络驱动器上的共享仓库.我收到以下错误:
:~/git push origin master
Counting objects ... done
Writing objects ...
Total ....
Run Code Online (Sandbox Code Playgroud)
但是之后:
fatal: cannot pread pack file: No Permission
error: unpack failed: index-pack abnormal exit
To /networkshare/repo.git
! [remote rejected] master -> master (n/a unpack error)
Run Code Online (Sandbox Code Playgroud)
远程目录的权限如下:
:~/ls -all
drwxr-xr-x ndbd MyGroup Date Repo.Git
Run Code Online (Sandbox Code Playgroud)
任何线索?
network-share ×10
windows ×5
c# ×3
file ×2
git ×2
.net ×1
credentials ×1
delphi ×1
file-io ×1
java ×1
jfilechooser ×1
mapped-drive ×1
php ×1
smb ×1
unpack ×1
winapi ×1