подскажите пожалуйста есть ли в C# возможность находясь в учетке обычного доменного пользователя получить информацию об установленном ПО и информацию о железе на другой доменной машине?
На тех машинах, к которым вы хотите осуществлять удаленный доступ, необходимо:
убедиться, что включена служба удаленного реестра
добавить в список разрешений ключа реестра HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurePipeServers\winreg
группу "Пользователи домена", и установить галку "Разрешить" напротив пункта "Чтение".
После этого, вы можете получить доступ к любой информации из реестра удаленной машины из-под любой учетной записи домена. Например, список программ, установленных глобально (для всех пользователей компьютера) можно вывести так:
using System;
using Microsoft.Win32;
namespace ConsoleApp1
{
class Program
{
public static void Main(string[] argv)
{
RegistryKey remote = RegistryKey.OpenRemoteBaseKey(RegistryHive.LocalMachine, "\\\\compname");
using (remote)
{
RegistryKey subkeyUninstall = remote.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall");
using (subkeyUninstall)
{
foreach (var subkey_name in subkeyUninstall.GetSubKeyNames())
{
RegistryKey subkeyApp = subkeyUninstall.OpenSubKey(subkey_name);
using (subkeyApp)
{
object dispname = subkeyApp.GetValue("DisplayName");
if (!String.IsNullOrEmpty(dispname as string)) Console.WriteLine(dispname as string);
else Console.WriteLine(subkey_name);
}
}
}
}
Console.ReadKey();
}
}
}
Безопасность такого решения, впрочем, под серьезным вопросом, так как доступ придется открывать ко всему реестру. Существует групповая политика для разрешения доступа на уровне отдельных ключей, но она, насколько я понял, не позволяет дать доступ только на чтение, так что это еще хуже.
Можно сделать так:
В итоге получается, что программа запускается по расписанию и кладет данные на общую шару и любой пользователь обладающий доступ на чтение, может открыть необходимый TXT и увидеть нужную информацию.
И проблем с безопасностью никаких не будет.
Ну это самый простой вариант. Решение "по взрослому"- это написать сервис к которому будут обращаться пользователи. А сам сервис будет иметь админские права и делать то, что я описал в первых пунктах.
Виртуальный выделенный сервер (VDS) становится отличным выбором
Есть Модель ClientТуда записывается вся контактная информация о клиенте
Хочу разработать клиент-серверное приложение для того, чтобы клиенты могли скачивать файлы