有一个C#服务程序需要调用C++程序集,这个C++程序集执行中会向一个文件写入数据,本来运行得好好的,没有任何问题,但是当我将这个C#程序包装成一个Windows服务发布的时候,其他一切也都正常,却有一个致命问题,当它调用的那个C++程序集向文件写入数据时,数据没有实际上写入到文件,也不报任何错误,真是要命,哪一位大神能发发慈悲,指点一下这个问题该如何解决?不胜感激!!
请检查一下权限和路径, 还有DLL注册问题
被包装成Windows服务的C#程序本身也需要向一些文件写入数据,但是它能正常运行,但是它调用的C++程序集为什么就没有权限向文件写入数据了,而且路径也没有什么特别的,DLL注册是使用NativeMethod.LoadLibrary方法,好像根本没有地方可以设置权限啊
@Patrickz10:
谢谢这种方式调用:
[DllImport("user32.dll", CharSet = CharSet.Auto)]
static extern IntPtr SendMessage(IntPtr hWnd, UInt32 Msg, IntPtr wParam, IntPtr lParam);
@XiaoFaye: 尝试了,一样的
服务程序的相对路径和普通程序是不一样的,它的默认路径是 “windows/system32”。 有读取相对路径下的文件的程序可能会出错,另外,如果输出文件是相对路径的话,也可能输出到system32目录下了。