query user 指令无法在platform target为x86时使用

本文讲述了在项目中遇到的一个问题:在x86平台上,通过`query user`或`quser`命令无法获取到网络service中当前登录用户的名称。通过调用cmd或powershell执行脚本,发现平台可能影响了指令的执行。最终解决方案是将项目平台改为Any CPU并取消32位优先选项,成功获取用户信息。文章还探讨了x86程序在64位系统中的运行情况,并分享了相关资料链接供读者深入研究。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

近期做一个项目,需要获取电脑当前的登录用户,网上查找资料,发现可以直接使用以下两种方式:

  1. System.Environment.UserName(),
  2. WindowsIdentity.GetCurrent().Name

实际使用后发现这两种方法都无法或者到当前登录的用户名,因为我的软件是运行在网络service上的,这种情况下拿到的值如下:

  1. WindowsIdentity.GetCurrent().Name: NT AUTHORITY\NETWORK SERVICE
  2. System.Environment.UserName: MS12520(电脑的名字)

继续查找相关资料,后来发现,有前辈用用查询任务管理器里面explorer.exe的方式来获取用户户名:

string username = string.Empty;
var query = new ObjectQuery("SELECT * FROM Win32_Process WHERE Name = 'explorer.exe'");
var explorerProcesses = new ManagementObjectSearcher(query).Get();
foreach (ManagementObject mo in explorerProcesses)
{
	string[] ownerInfo = new string[2];
	mo.InvokeMethod("GetOwner", ownerInfo);
	username = string.Concat(ownerInfo[1], @"\", ownerInfo[0]);
}

但是这种方式有个问题,如果有用户远程连接到此电脑,将会有多个explorer.exe进程,这种方式只是按照顺序拿了第一个用户,并不是当前登录的用户。

继续查询,发现可以调用cmd.exe,使用 query user/quser 获取用户列表,获取到状态为active的用户。

在Spring Boot项目中,你可以使用QueryWrapper来判断对象的多个属性是否为空。QueryWrapper是一个查询构造器,它允许你根据对象的属性进行查询。 以下是一个示例代码,展示了如何在Spring Boot项目中使用QueryWrapper来判断对象的多个属性是否为空: 首先,确保你已经配置好了Spring Boot项目,并且有一个实体类(例如User)和一个对应的Repository(例如UserRepository)。 ```java // 实体类 public class User { private String name; private Integer age; private String email; // 其他属性和getter、setter方法 } // Repository接口 public interface UserRepository extends JpaRepository<User, Long> { } ``` 接下来,你可以在服务类中使用QueryWrapper来判断对象的多个属性是否为空。下面是一个示例代码: ```java @Service public class UserService { @Autowired private UserRepository userRepository; public List<User> checkMultipleProperties(User user) { QueryWrapper<User> queryWrapper = new QueryWrapper<>(); queryWrapper.eq(user.getName(), null); // 判断name属性是否为空 queryWrapper.isNull(user.getAge()); // 判断age属性是否为空 queryWrapper.isNotNull(user.getEmail()); // 判断email属性是否不为空 List<User> userList = userRepository.findAll(queryWrapper); return userList; } } ``` 在上面的代码中,我们创建了一个QueryWrapper对象,并使用eq、isNull、isNotNull方法来添加查询条件。这些方法用于设置条件判断,可以根据实际需求添加更多的属性进行判断。然后,我们使用userRepository的findAll方法执行查询,并返回符合条件的User对象列表。 这样,当调用UserService的checkMultipleProperties方法,可以根据传入的User对象判断其多个属性是否为空,并返回符合条件的用户列表。请注意,这里假设你已经正确配置了数据库连接和实体类与Repository的映射关系。 希望这个示例能帮助你在Spring Boot项目中使用QueryWrapper来判断对象的多个属性是否为空。如有其他问题,请随提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值