我对c#有点新鲜,我试图找到一种方法来查看是否在具有特定名称的域中找到了计算机。如果该系统存在,则程序需要添加一个数字,以便生成新的计算机名称。尝试用循环,但感觉我没有正确地做到这一点。感谢您的反馈。
PrincipalContext ctx = new PrincipalContext(ContextType.Domain);
int i = 1;
while (i < 100)
try
{
// find the computer in question
ComputerPrincipal computer = ComputerPrincipal.FindByIdentity(ctx, "PC-" + userName + "-" + i);
// if found - add an number
if (computer != null)
{
bool done = SetComputerName("PC-" + userName + "-" + i++);
if (done)
{
MessageBox.Show("We renamed your computer press ok to restart the computer");
}
else
{
MessageBox.Show("Error");
}
}
else
{
bool done = SetComputerName("PC-" + userName + "-1");
}
答案 0 :(得分:1)
这里有一个非常严重的逻辑错误。
如果存在COMPUTERNAME-1
,您将名称设为COMPUTERNAME-2
。即使那已经存在。或者,如果您没有导致i
在 创建新名称之后不会增加的错误。实际上,您总是尝试将名称设置为COMPUTERNAME-1
。
可能您应该寻找未使用的名字。使用名称时,不执行任何操作,让循环增加i
并继续查看。
(我甚至没有考虑过与计算机是否已经是域成员相关的问题,或者如果两台计算机同时尝试声明相同名称的竞争条件)