2014-10-30 117 views
0

我在visual studio 2005中创建一个.net窗口应用程序,其中我需要修改Windows服务的登录凭证。 请参阅Services.msc - >右键单击任何服务 - >属性 - >登录选项卡。 我需要知道是否有.net 2.0中的任何API /类可用于调用此登录选项卡窗口? 我想在我的Windows应用程序中调用此屏幕,以便我可以对用户凭证执行修改。 需要援助,因为我是.net的新手。使用.net 2.0修改windows服务(services.msc)的登录凭证

感谢

+0

道歉的版本应该是2.0,在.NET Windows应用程序我创建东东ds将在2005年视觉工作室创建,因此这一限制。 – subee 2014-10-30 17:20:58

+0

已编辑! :) – subee 2014-10-31 06:01:26

+0

你还有1.1标签,我更新了它。 – 2014-10-31 06:05:14

回答

0

我已经在过去使用WMI's Change

public uint ChangeLogonAccount(string serviceName, string user, string pw) 
{ 
    // Service name is not the same as the display name. For example, world wide web publishing service's service name would be "w3svc" 
    string objPath = string.Format("Win32_Service.Name='{0}'", serviceName); 
    using (ManagementObject mo= new ManagementObject(new ManagementPath(objPath)) 
    { 
     object[] wmiParams = new object[8]; // WMI_SERVICE_PROPERTY.StartPassword is index 7 so we need an object array of at least length 8 
     wmiParams[(int) WMI_SERVICE_PROPERTY.StartName] = user; 
     wmiParams[(int) WMI_SERVICE_PROPERTY.StartPassword] = pw; 
     return (uint) mo.InvokeMethod("Change", wmiParams); 
    } 
} 

的WMI_SERVICE_PROPERTY枚举在我的例子中使用:

public enum WMI_SERVICE_PROPERTY 
{ 
    DisplayName = 0, 
    PathName, 
    ServiceType, 
    ErrorControl, 
    StartMode, 
    DesktopInteract, 
    StartName, 
    StartPassword, 
    LoadOrderGroup, 
    LoadOrderGroupDependencies, 
    ServiceDependencies 
} 
+0

i'已经使用代码来更改登录凭据,但凭据似乎不会更新。任何建议如何去改变用户名和密码? – subee 2014-11-05 09:37:46

+0

string objPath = string.Format(“Win32_Service.Name ='{0}'”,“CryptSvc”); using(ManagementObject mo = new ManagementObject(new ManagementPath(objPath))) object [] wmiParams = new object [8]; wmiParams [(int)WMI_SERVICE_PROPERTY.StartName] =“管理员”; wmiParams [(int)WMI_SERVICE_PROPERTY.StartPassword] =“#welcome123”; uint ret =(uint)mo.InvokeMethod(“Change”,wmiParams); \t} – subee 2014-11-05 09:38:09

+0

此代码现在正在做的唯一事情是显示返回值 – subee 2014-11-05 09:40:01

0

AFAIK托管C#ServiceController API不允许密码维护。本地API是ChangeServiceConfig,这是你应该在你的应用中使用的。显示您自己的服务配置对话框。现在

,如果要专门使用Microsoft管理控制台(亦称MMC)操纵服务(SERVICES.MSC不过是具体配置MMC的),那么你必须使用MMC automation objects模型。作为COM自动化,完全由C#通过COM interop支持。

0

检查CodePlex上项目(Services+)它与vb.net内置开源的,你可以找到更改登录凭证和其他功能的Windows服务

+0

感谢您的回复。你能更清楚地知道在你提到的服务+网站上搜索什么? – subee 2014-10-31 15:55:30

+0

subee,你打电话给services.msc:Process.start(services.msc),你的应用程序可以使用任何凭证,你可以使用模拟器,在服务中有impersonator类和关于调用services.msc的例子 – Sameh 2014-10-31 16:59:01