内置系统账户:Local system/Network service/Local Service 区别

本文深入探讨了Windows系统中三种关键账户——Local System、Network Service与Local Service的权限和作用,揭示了它们如何在本地系统、网络服务与本地服务中发挥独特功能。
 

1.Local   System (本地系统):
该账户具有相当高的权限。
首先,该账户也隶属于本地Administrators   用户组,因此所有本地Administrators用户能够进行的操作该账户也能够进行,
其次,该账户还能够控制文件的权限(NTFS   文件系统)和注册表权限,甚至占据所有者权限来取得访问资格。
如果机器处于域中,那么运行于Local   System   账户下的服务还可以使用机器账户在同一个森林中得到其他机器的自动认证,
最后一点就是运行于Local   System   下的进程能够使用空会话(null   session)去访问网络资源。
而且,其他一些Windows 用户模式下的核心组件也运行于该账户下,例如system32\Smss.exe 等。
需要注意的是,运行于此账户下的进程使用的是HKEY_USERS\.Default 账户配置,因此它不能够访问其他账户的配置。

举例来说,以LocalSystem账户运行的服务主要有:WindowsUpdate   Client、   Clipbook、Com+、DHCP   Client、Messenger  

Service、Task   Scheduler、Server   Service、Workstation   Service,还有Windows   Installer。

2.Network   Service(网路服务):
该账户也是为了使用机器账户在网络上的其他计算机上认证而设定的。但是他没有Local   System   那么多的权限。
它能够以计算机的名义访问网络资源。以这个账户运行的服务会根据实际环境把访问凭据提交给远程的计算机。
运行于此账户下的进程使用网络账户配置文件HKEY_USERS\S-1-5-20和Documents and Settings\NetworkService。

举例来说,以Network   Service账户运行的服务主要有:Distributed   Transaction   Coordinator、DNS   Client、

Performance   Logs   and   Alerts,还有RPC   Locator。

3.Local   Service(本地服务):
Local   Service账户是预设的拥有最小权限的本地账户,并在网络凭证中具有匿名的身份。
运行于此账户下的进程和运行于Network   Service   账户下的进程的区别
在于运行于Local   Service   账户下的进程只能访问允许匿名访问的网络资源。
运行于Local   Service   下的账户使用的配置文件是HKU\S-1-5-19   和Documents   and   Settings\LocalService。

举例来说,以Local   Service账户运行的服务主要有:Alerter、Remote   Registry、Smart   Card、SSDP,还有WebClient

当在 Java 中遇到 `no tesseract in java.library.path` 错误,意味着 Java 虚拟机(JVM)在 `java.library.path` 指定的路径中未能找到所需的 `tesseract` 本地库。以下是可能的解决办法: #### 1. 确认 Tesseract 库已安装 要保证 Tesseract OCR 已经正确安装在系统里。在 macOS 上,可以使用 Homebrew 来安装: ```bash brew install tesseract ``` 在 Ubuntu 上,使用以下命令安装: ```bash sudo apt-get install tesseract-ocr ``` #### 2. 找到 Tesseract 库文件的位置 安装完成之后,需要找到 Tesseract 库文件(像 `libtesseract.dylib` 这类文件)的具体位置。可以使用如下命令查找: ```bash find / -name "libtesseract.*" 2>/dev/null ``` #### 3. 将库文件路径添加到 `java.library.path` 有几种途径可以把 Tesseract 库文件的路径添加到 `java.library.path`: ##### 3.1 运行 Java 程序时指定 在运行 Java 程序的时候,使用 `-Djava.library.path` 参数指定库文件的路径。假设 Tesseract 库文件位于 `/usr/local/lib`,可以这样运行程序: ```bash java -Djava.library.path=/usr/local/lib YourMainClass ``` ##### 3.2 在代码里设置 也能够在 Java 代码中动态设置 `java.library.path`: ```java public class Main { static { System.setProperty("java.library.path", "/usr/local/lib"); try { java.lang.reflect.Field fieldSysPath = ClassLoader.class.getDeclaredField("sys_paths"); fieldSysPath.setAccessible(true); fieldSysPath.set(null, null); } catch (Exception e) { e.printStackTrace(); } } public static void main(String[] args) { // 程序逻辑 } } ``` #### 4. 使用 JNA(Java Native Access) JNA 能够简化 Java 调用本地库的过程。可以添加 JNA 依赖,并且使用 `jna.library.path` 指定库文件路径: ```java import com.sun.jna.Library; import com.sun.jna.Native; public class TesseractExample { public interface TesseractLibrary extends Library { // 定义本地库的方法 } public static void main(String[] args) { System.setProperty("jna.library.path", "/usr/local/lib"); TesseractLibrary tesseract = Native.load("tesseract", TesseractLibrary.class); // 使用 tesseract 进行操作 } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值