在这篇文章中,我们将带领您了解在compmgmt.msc中显示的文件监视文件上的windows#locks的全貌,包括在文件/home/somebody/workspace/so的相关情况。同时,我们
在这篇文章中,我们将带领您了解在compmgmt.msc中显示的文件监视文件上的windows #locks的全貌,包括在文件/home/somebody/workspace/so的相关情况。同时,我们还将为您介绍有关android – 如何监视文件夹中的文件更改在后台?、cmd – 如何记录Windows XP命令行应用程序中显示的文本、Docker Compose挂载Windows文件夹、Laradock:docker-compose.yml 在 Windows 上是无效格式 (PORT[/PROTOCOL])的知识,以帮助您更好地理解这个主题。
本文目录一览:- 在compmgmt.msc中显示的文件监视文件上的windows #locks(在文件/home/somebody/workspace/so)
- android – 如何监视文件夹中的文件更改在后台?
- cmd – 如何记录Windows XP命令行应用程序中显示的文本
- Docker Compose挂载Windows文件夹
- Laradock:docker-compose.yml 在 Windows 上是无效格式 (PORT[/PROTOCOL])
在compmgmt.msc中显示的文件监视文件上的windows #locks(在文件/home/somebody/workspace/so)
我们目前遇到了太多的用户试图通过使用文件锁的传统程序访问单个文件的问题。
我正在努力研究是否可以编写一个在服务器上运行的dotnet程序,并监视这个特定的文件(平面文件数据库)。 每当一个客户端试图访问这个文件,并被另一个用户locking – 我想给他们发送一条消息告诉他们谁正在访问这个文件,这样他们就可以惹恼那个人而不是我。
当我打开compmgmt.msc我可以看到文件,文件锁和用户locking,所以我知道这个信息是accessbile。 不过,我似乎无法find一个可以获取此信息的dotnet类(#locks,locking它的用户)。
有人知道有一class能帮助我吗?
什么是控件的“On_Load”等效表单?
closuresWindows资源pipe理器的特定实例
Msvcr71.dll Msvcp71.dll丢失
转换.net EXE本地WIN32 EXE?
在Windows 8上使用简单的Windows窗体/ WPF应用程序是否适用于平板电脑?
不能使用`new`关键字修改一个对象
使用C#编程检测Windowslogin尝试
.NET Bitmap.Load方法在不同的计算机上产生不同的结果
更改默认的Windows键盘快捷键
C#中的本地窗口层次结构和类名
底层的winapi函数是NetFileEnum()。 你必须捏住它 。
您可能可以通过WMI(Windows Management Instrumentation)访问这些信息: http : //msdn.microsoft.com/en-us/library/windows/desktop/aa394582%28v=vs.85%29.aspx
这可能是一个很好的起点: http : //social.msdn.microsoft.com/Forums/en/netfxbcl/thread/19b88200-3dfd-4042-b16a-1f514dd5e1f9
另外,在开始使用WMI Explorer进行编码之前,请尝试获取所需信息: http : //www.ks-soft.net/hostmon.eng/wmi/index.htm
这也可以帮助:select * from cim_datafile where name ='d: file.txt'
请注意使用双斜杠“”
android – 如何监视文件夹中的文件更改在后台?
解决方法
首先
您必须创建一个将在启动时启动并始终运行的服务.
为了实现这一点,你必须创建一个broadcastReceiver,注册它以接收ACTION_BOOT_COMPLETED和RECEIVE_BOOT_COMPLETED权限给你的清单
public class StartupReceiver extends broadcastReceiver { @Override public void onReceive(Context context,Intent intent) { Intent myIntent = new Intent(context,FileSystemObserverService.class); context.startService(myIntent); } }
在你的清单中
<manifest > <application > <service android:name=".FileSystemObserverService" android:enabled="true" android:exported="true" > </service> <!-- Declaring broadcast receiver for BOOT_COMPLETED event. --> <receiver android:name=".StartupReceiver" android:enabled="true" android:exported="false"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED"/> </intent-filter> </receiver> </application> <!-- Adding the permission --> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> </manifest>
其次
该服务必须实现android.os.FileObserver类.由于android.os.FileObserver只观察您发送给它的路径并且没有观察路径的子目录,因此您必须扩展它并向其添加SingleFileObserver观察者.您还必须在优先级设置为低的另一个线程中运行观察
public class FileSystemObserverService extends Service { @Override public IBinder onBind(Intent intent) { // Todo: Return the communication channel to the service. throw new UnsupportedOperationException("Not yet implemented"); } @Override public int onStartCommand(Intent intent,int flags,int startId) { observe(); return super.onStartCommand(intent,flags,startId); } public File getInternalStoragePath(){ File parent=Environment.getExternalStorageDirectory().getParentFile(); File external=Environment.getExternalStorageDirectory(); File[] files =parent.listFiles(); File internal=null; if(files!=null){ for(int i=0;i<files.length;i++){ if(files[i].getName().toLowerCase().startsWith("sdcard")&&!files[i].equals(external)){ internal=files[i]; } } } return internal; } public File getExtenerStoragePath(){ return Environment.getExternalStorageDirectory(); } public void observe(){ Thread t=new Thread(new Runnable(){ @Override public void run() { //File[] listofFiles = new File(path).listFiles(); File str=getInternalStoragePath(); if(str!=null){ internalPath=str.getAbsolutePath(); new Obsever(internalPath).startWatching(); } str=getExtenerStoragePath(); if(str!=null){ externalPath=str.getAbsolutePath(); new Obsever(externalPath).startWatching(); } }}); t.setPriority(Thread.MIN_PRIORITY); t.start(); } class Obsever extends FileObserver{ List<SingleFileObserver> mObservers; String mPath; int mMask; public Obsever(String path) { // Todo Auto-generated constructor stub this(path,ALL_EVENTS); } public Obsever(String path,int mask) { super(path,mask); mPath =path; mMask =mask; // Todo Auto-generated constructor stub } @Override public void startWatching() { // Todo Auto-generated method stub if(mObservers!=null) return; mObservers= new ArrayList<SingleFileObserver>(); Stack<String> stack= new Stack<String>(); stack.push(mPath); while(!stack.empty()){ String parent = stack.pop(); mObservers.add(new SingleFileObserver(parent,mMask)); File path = new File(parent); File[] files = path.listFiles(); if(files==null) continue; for(int i=0;i<files.length;++i){ if(files[i].isDirectory()&&!files[i].getName().equals(".")&&!files[i].getName().equals("..")){ stack.push(files[i].getPath()); } } } for(int i=0;i<mObservers.size();i++){ mObservers.get(i).startWatching(); } } @Override public void stopWatching() { // Todo Auto-generated method stub if(mObservers==null) return; for(int i=0;i<mObservers.size();++i){ mObservers.get(i).stopWatching(); } mObservers.clear(); mObservers=null; } @Override public void onEvent(int event,final String path) { if(event==FileObserver.OPEN){ //do whatever you want } else if(event==FileObserver.CREATE){ //do whatever you want } else if(event==FileObserver.DELETE_SELF||event==FileObserver.DELETE){ //do whatever you want } else if(event==FileObserver.MOVE_SELF||event==FileObserver.MOVED_FROM||event==FileObserver.MOVED_TO){ //do whatever you want } } private class SingleFileObserver extends FileObserver{ private String mPath; public SingleFileObserver(String path,int mask) { super(path,mask); // Todo Auto-generated constructor stub mPath=path; } @Override public void onEvent(int event,String path) { // Todo Auto-generated method stub String newPath=mPath+"/"+path; Obsever.this.onEvent(event,newPath); } } }
而已使用此代码,您将能够观察整个文件系统,包括内部和外部文件系统
cmd – 如何记录Windows XP命令行应用程序中显示的文本
我有一个运行一些东西的批处理文件,但是一切都过得很快我无法看到是否发生了任何错误.
C:\> myBatch.bat > myBatch.log
以上将标准输出重定向到名为myBatch.log的文件.
如果您还需要将标准错误重定向到此文件,则可以在命令中附加2>& 1:
C:\> myBatch.bat > myBatch.log 2>&1
注意单个>将覆盖文件并从头开始并且>>将捕获的输出附加到文件的末尾.在一组连续命令中使用此语法时,您应该小心使用>在第一次调用启动文件,然后>>在所有后续调用中添加到新文件的末尾.
例如,一个简单的bat文件,
@echo off echo start > test.log date /t >> test.log time /t >> test.log echo done >> test.log
将生成一个名为test.log的文件,其中包含以下内容:
start Tue 09/22/2009 03:10 PM done
Docker Compose挂载Windows文件夹
我在Windows中使用Docker Toolbox,并尝试将Windows文件夹安装在docker-compose.yml文件中,如下所示:
nginx: image: nginx:latest container_name: test_server ports: - "80:80" volumes: - /sss:/c/data/www:ro environment: - VIRTUAL_HOST=test.local
我的目标是将C:\data\www
Docker Toolbox已经创建的boot2docker
VM映像安装到该映像,然后从该映像加载到其中的nginx容器。
不幸的是,它不起作用。我在boot2docker映像中找到一个文件夹sss,但是它没有指定我的Windows数据就为空。
我究竟做错了什么?在开发过程中是否有更好的做法以便在Windows上使用Docker(因此您需要在Windows,DockerVM(boot2docker)和Docker容器之间共享代码)?
答案1
小编典典我的目标是挂载
C:\data\www
到boot2docker VM映像
从“ 手动共享目录作为Docker卷安装点 ”:
你需要:
修改您的VirtualBox VM(确保先停止它):
VBoxManage sharedfolder add <machine name/id> --name <mount_name> --hostpath <host_dir> --automount
in your case
/c/Program\ Files/Oracle/VirtualBox/VBoxManage.exe sharedfolder add default –name www –hostpath ‘C:\data\ww’ –automount
向您的boot2docker VM添加自动挂载:
- 编辑/创建(如
root
)/mnt/sda1/var/lib/boot2docker/bootlocal.sh
,(sda1
可能与您不同) - 加
mkdir -p <local_dir>
mount -t vboxsf -o defaults,uid=
id -u docker
,gid=id -g docker
<local_dir
- 编辑/创建(如
Laradock:docker-compose.yml 在 Windows 上是无效格式 (PORT[/PROTOCOL])
我在发布这个问题后直接找到了解决方案。
很容易忘记添加“。”创建文件时在 env 之前。
我在这里找到了解决方案:https://github.com/laradock/laradock/issues/1437
我们今天的关于在compmgmt.msc中显示的文件监视文件上的windows #locks和在文件/home/somebody/workspace/so的分享已经告一段落,感谢您的关注,如果您想了解更多关于android – 如何监视文件夹中的文件更改在后台?、cmd – 如何记录Windows XP命令行应用程序中显示的文本、Docker Compose挂载Windows文件夹、Laradock:docker-compose.yml 在 Windows 上是无效格式 (PORT[/PROTOCOL])的相关信息,请在本站查询。
本文标签: