Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

rmonteiro

[Resolvido] Pegar Espaço em Disco em C#

Recommended Posts

Bom dia,

estou desenvolvendo um Aplicativo Windows que pega o espaço em disco de diversos servidores da rede, sendo que eu tenho 4 servidores que estão em outro domínio, ex: 10 servidores no domínio AA e 4 servidores no domínio BB e o aplicativo roda no domínio AA. quando eu tento pegar os dados do domínio BB da Acesso Negado. Estou postando o código abaixo, se alguém puder me ajudar agradeceria muito.

 

ConnectionOptions opt = new ConnectionOptions();
			ObjectQuery oQuery = new ObjectQuery("SELECT Size, FreeSpace, Name, FileSystem FROM Win32_LogicalDisk WHERE DriveType = 3");
			ManagementScope scope = new ManagementScope("\\\\<meu servidor>\\root\\cimv2", opt);
			
			ManagementObjectSearcher moSearcher = new ManagementObjectSearcher(scope, oQuery);
			ManagementObjectCollection collection = moSearcher.Get();
			foreach (ManagementObject res in collection)
			{
				if (res["Name"].ToString() == "C:")
				{
					decimal size = Convert.ToDecimal(res["Size"]) / 1024 / 1024 / 1024;
					decimal freeSpace = Convert.ToDecimal(res["FreeSpace"]) / 1024 / 1024 / 1024;
					string unidade = res["Name"].ToString();
					decimal tamanho = Decimal.Round(size, 2);
					decimal livre = Decimal.Round(freeSpace, 2);
					decimal usado = Decimal.Round(size - freeSpace, 2);
					decimal livrepercent = Decimal.Round(usado / size, 2) * 100;
					if (livrepercent > parametro)
					{
						unTPC.ForeColor = Color.Red;
						tamTPC.ForeColor = Color.Red;
						liTPC.ForeColor = Color.Red;
						imgTPC.Visible = true;
						SystemSounds.Question.Play();
					}
					unTPC.Text = unidade;
					unTPC.Refresh();
					unTPC.Visible = true;
					tamTPC.Text = tamanho.ToString();
					tamTPC.Refresh();
					tamTPC.Visible = true;
					liTPC.Text = livre.ToString();
					liTPC.Refresh();
					liTPC.Visible = true;
				}
				if (res["Name"].ToString() == "D:")
				{
					decimal size = Convert.ToDecimal(res["Size"]) / 1024 / 1024 / 1024;
					decimal freeSpace = Convert.ToDecimal(res["FreeSpace"]) / 1024 / 1024 / 1024;
					string unidade = res["Name"].ToString();
					decimal tamanho = Decimal.Round(size, 2);
					decimal livre = Decimal.Round(freeSpace, 2);
					decimal usado = Decimal.Round(size - freeSpace, 2);
					decimal livrepercent = Decimal.Round(usado / size, 2) * 100;
					if (livrepercent > parametro)
					{
						un2TPC.ForeColor = Color.Red;
						tam2TPC.ForeColor = Color.Red;
						li2TPC.ForeColor = Color.Red;
						imgTPC.Visible = true;
						SystemSounds.Question.Play();
					}
					un2TPC.Text = unidade;
					un2TPC.Refresh();
					un2TPC.Visible = true;
					tam2TPC.Text = tamanho.ToString();
					tam2TPC.Refresh();
					tam2TPC.Visible = true;
					li2TPC.Text = livre.ToString();
					li2TPC.Refresh();
					li2TPC.Visible = true;
				}
			}

Compartilhar este post


Link para o post
Compartilhar em outros sites

então, foi eu que postei o tópico e agora eu irei responder...

 

o problema era que eu rodava o app de uma rede XXX e além de pegar os dados da rede XXX eu também buscava de uma rede YYY e ZZZ. A questão era que o usuário que estava na rede XXX não tinha permissão para fazer nada nas demais rede, criei um usuário local nos servidores das demais redes com o mesmo nome de usuário e senha assim funcionou normalmente.

 

 

mas obrigado pela atenção.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.