相关疑难解决方法(0)

来自C#的Windows模拟

作为LocalSystem运行的C#程序如何临时模拟另一个用户的登录标识?粗略地说,我有一个Windows服务,我想作为LocalSystem运行,但有时模仿用户XYZ(当使用Windows集成安全性连接到数据库时).

最重要的是:有没有办法在不知道其他用户密码的情况下做到这一点?

注意:如果密码是强制性的,则建议安全地存储密码(c#和/或vbscript).

c# windows impersonation

30
推荐指数
3
解决办法
6万
查看次数

如何从Windows服务运行控制台应用程序?

我有一个用c#编写的Windows服务,我需要从中运行一个控制台应用程序.控制台应用程序也用c#编写.

控制台应用程序运行时不是从Windows服务运行.当它从ws运行它没有做它应该做的任何事情,因为它应该工作10-20秒我在调试代码中看到立即执行.

我用以下代码启动我的控制台应用程序:

proc.Start(fullPathToConsole, args);
proc.WaitForExit();
Run Code Online (Sandbox Code Playgroud)

控制台的路径是正确的,当我试图从cmd或只是在资源管理器(没有args)运行它时,它工作正常.但在运行该服务后,我认为没有效果.

我已经尝试转到服务属性并授予它访问桌面的权限,并在系统和我的用户下运行(也在服务属性中指定).一切都保持不变.

附加:我知道服务没有ui,我不想要.我希望服务运行控制台应用程序.无需从中获取任何数据或像ui一样使用此控制台,只需运行它就可以完成它的工作.

更新我发现,运行计算或任何其他Windows应用程序很容易.但仍然无法运行cmd或任何控制台应用程序.实际上我需要在XP SP2和Windows 2003 Server上运行它.所以无论如何都不需要与Vista交互.

任何评论都会很高兴!

c# windows-services console-application

29
推荐指数
3
解决办法
9万
查看次数

使用Windows服务的凭据启动进程

我有一个运行为mydomain\userA的Windows服务.我希望能够从服务中运行任意.exes.通常,我使用Process.Start()并且它工作正常,但在某些情况下我想以不同的用户(mydomain\userB)运行可执行文件.

如果我更改ProcessStartInfo,我用来启动进程以包含凭据,我开始收到错误 - 或者是一个错误对话框,显示"应用程序无法正确初始化(0xc0000142).单击确定以终止应用程序."或者"访问被拒绝"Win32Exception.如果我从命令行运行进程启动代码而不是在服务中运行它,则进程将使用正确的凭据开始(我已通过设置ProcessStartInfo来运行whoami.exe并捕获命令行输出来验证这一点) ).

我也尝试使用WindowsIdentity.Impersonate()进行模拟,但这没有用 - 据我所知,模拟只会影响当前线程,启动新进程会继承进程的安全描述符,而不是当前线程.

我在一个独立的测试域中运行它,因此userA和userB都是域管理员,并且两者都在域范围内具有"登录即服务"权限.

.net c# windows-services

9
推荐指数
2
解决办法
1万
查看次数