小编Jör*_*son的帖子

服务需要生成非交互式子进程,但失败并显示“拒绝访问”

首先,我并不想在任何类型的桌面交互。

我想做的是分离关注点。我有一个在本地系统帐户 (LSA) 下运行的服务。有时,我需要在不同的帐户下执行进程。

我正在System.Diagnostics.Process为此使用。这是我迄今为止尝试过的:

  • 将服务应用作为普通桌面应用运行,在同一个账户下启动子进程:有效
  • 将服务应用作为普通桌面应用运行,在另一个账户下启动子进程:有效
  • 将服务作为服务应用程序运行(作为 LSA),在同一帐户(LSA)下启动子进程:有效
  • 将服务作为服务应用程序(作为 LSA)运行,在另一个帐户下启动子进程:不起作用

对我不起作用的情况向我抛出一个带有“拒绝访问”的 Win32Exception。我已授予相关用户帐户作为服务登录的权利,但这没有任何区别。

为了好玩,我也尝试过这些场景:

  • 如果我在自己的 dev 帐户(我们称之为 Developer)下运行该服务,并尝试在较低特权的帐户(我们称之为 ServiceAccount)下启动子进程,process.Start() 不会抛出,并返回 true,但是我从未在 Sys Internal 的 Process Explorer 中看到任何正在启动的进程,并且Process.Exited会立即被触发。
  • 如果我在 ServiceAccount 下运行服务,并在同一帐户 (ServiceAccount)下启动子进程,它会按预期工作。

这是我正在使用的代码:

var pi = new ProcessStartInfo {
    CreateNoWindow = true,
    WindowStyle = ProcessWindowStyle.Hidden,
    UseShellExecute = false,
    ErrorDialog = false,
    RedirectStandardError = false,
    RedirectStandardInput = false,
    RedirectStandardOutput = false,
    FileName = @"C:\Path\To\SomeApplication.exe",
    Arguments = @"Some arguments",
    UserName = …
Run Code Online (Sandbox Code Playgroud)

c# windows service process .net-3.5

5
推荐指数
1
解决办法
3081
查看次数

RAII的Objective-C模式?

我发现自己编写这样的代码来实现异常安全的代码:

Container* container = [Container new];
@try {
    while(someCondition) {
        ElementType* value = [someObject createObjectFromStorage];
        [container add:value]; // container retains object
        [value release];
    }

    [_container release];
    _container = [container retain];
} @finally {
    [container release];
}
Run Code Online (Sandbox Code Playgroud)

在Objective-C中还有其他一些更简洁的模式吗?

raii objective-c exception-safety

4
推荐指数
1
解决办法
1680
查看次数

识别关系并插入子实体会导致"无法在表中插入标识列的显式值"

我试图让识别关系在Entity Framework中工作,这样我就可以使用Remove删除其集合中的项目.

我创建了一个测试:

public class OrderLine{   
    [Key, Column(Order = 0)]
    public int OrderLineId { get; set; }

    [Key, ForeignKey("Order"), Column(Order = 1)]
    public int OrderId{ get; set; }

    public virtual Order Order{ get; set; }

    [ForeignKey("Product")]
    public int ProductId { get; set; }

    public virtual Product Product { get; set; }

    public int Number { get; set; }}
Run Code Online (Sandbox Code Playgroud)

当我尝试添加OrderLine时:

        var order=_orderRepository.Find(1);
        var NewOrderLine= new OrderLine()
                                            {
                                                Number = 1,ProductId= 2
                                            };
        order.OrderLines.Add(NewOrderLine);
        _orderRepository.InsertOrUpdate(order);
        _orderRepository.Save();
Run Code Online (Sandbox Code Playgroud)

我收到了错误

当IDENTITY_INSERT设置为OFF时,无法在表'OrderLines'中为标识列插入显式值.

当我查看表时,SQL有一个主键,而不是OrderId和OrderLineId.此外,只有OrderLineId被设置为标识.所以它必须尝试插入一个值,但它似乎尝试插入的唯一值是0.

我可以使用以下方法插入表中的任何想法:

INSERT INTO …
Run Code Online (Sandbox Code Playgroud)

entity-framework entity-framework-4.3

4
推荐指数
1
解决办法
1780
查看次数

Microsoft SQL Server排序规则名称

有人知道排序规则的WS属性是做什么的吗?它与亚洲类型的脚本有什么关系吗?MSDN文档将其解释为"Width Sensitive",但对于瑞典语或英语而言,这没有任何意义......?

sql-server collation

3
推荐指数
1
解决办法
1835
查看次数

GCC和TC提供不同的产出?

请考虑以下代码:

#include <stdio.h>

int main()
{
        printf("%d", 300 * 300 / 300);
        return 0;
}
Run Code Online (Sandbox Code Playgroud)

在标准GCC编译器上运行时,此代码会给出结果,300但是当我使用Turbo C运行它时,结果是81.为什么会这样?我知道TC使用2个字节来存储整数,结果300 * 300显然会超过这个限制,但是在打印之前它再次被300分为右边?另外先计算什么?300 / 300300 * 300?)这种行为的原因是什么?

c gcc

3
推荐指数
1
解决办法
1068
查看次数

具有重叠I/O的TCP连接

是否可以使用重叠的I/O启动TCP连接请求,并在Windows中完成连接之前取消它?我需要至少支持Windows XP SP2.

winapi tcp winsock request-cancelling overlapped-io

3
推荐指数
1
解决办法
2033
查看次数

用Xcode在C编程中打开文件

我试图编写一个文件以打开文件并在C中读取该文件的内容。我使用的是xcode,但是文件指针返回的值为null。

int main(int argc, char** argv)
{    
    FILE *fp;
    fp=fopen("input.txt","r");
    if (fp==NULL)
        printf("error");
}
Run Code Online (Sandbox Code Playgroud)

这将错误显示为输出。有人可以帮我找到将input.txt文件放入项目的正确位置吗?

c xcode

1
推荐指数
1
解决办法
8897
查看次数

免费桥接对象,保留和释放

我目前正在查看NSMutableSet由该函数创建的CFSetCreateMutable().文档说明返回值CFSetCreateMutable()是免费的桥接,这意味着我可以简单地将其转换为NSMutableSet.这是否意味着向其发送release消息是完全有效的?我总是可以安全地假设我可以像对待allocNS级一样对待这些对象吗?

objective-c core-foundation nsmutableset

1
推荐指数
1
解决办法
412
查看次数