日期:2014-05-20  浏览次数:20691 次

关于Windows服务的问题 小弟不才 请各位大侠赐教(C#)
最近研究Windows服务(C#)
想法是开机服务启动 更换壁纸
先写了个demo控制台程序 搞定
牵涉 网上查阅的一些资料 主要运用到
[DllImport("user32.dll", CharSet = CharSet.Auto)]
public static extern int SystemParametersInfo(int uAction, int uParam, string lpvParam, int fuWinin);

这个方法
之前图片路径想读取默认“我的文档”
采用
Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)

此段代码
也另外写了个 服务程序 完了
安装和卸载服务 代码 都可以正常运行
在我的服务中 可以找到 自动方式 等
但问题来了
上面“我的文档”在服务代码中 同样的代码 尽然是读取到
Default User下的 我的文档
此乃第一个疑惑
后一个是 SystemParametersInfo 这个方法在控制台中 完成更换完毕的 返回值是 1
而在服务代码 跟踪日志中 查得 尽然是 0 且壁纸没有更换 
(图片 也照旧移过去到Default User下的 我的文档)

不知其中缘由 有些仓促 望各位路过的大侠们 赐教

恭听 先谢了
------解决方案--------------------
你看你的服务是以什么身份运行的


------解决方案--------------------
引用:
你看你的服务是以什么身份运行的

是管理员之前我也怀疑其他身份的
/// <summary>
/// 检查是否管理员权限
/// </summary>
private static void CheckRoot()
{
    System.Security.Principal.WindowsIdentity wid = System.Security.Principal.WindowsIdentity.GetCurrent();
    System.Security.Principal.WindowsPrincipal p = new System.Security.Principal.WindowsPrincipal(wid);

    bool isAdmin = (p.IsInRole(System.Security.Principal.WindowsBuiltInRole.Administrator));

    FileConfig.WritetFile(isAdmin ? "管理员" : "非管理员");
}

------解决方案--------------------
才发现是版主回复的
------解决方案--------------------
不要石沉大海啊 是我没说清楚
我会继续补充的...
控制台demo实现了 安装和卸载服务的操作
以及 返回值为1 变更壁纸
到服务程序 访问的路径变了 变更返回值为0 没更换壁纸

求解答...

查看权限 也是管理员的 还是哪有问题...
望指点