我试图在Windows服务中模拟域用户,并将该服务作为本地系统帐户登录.
到目前为止,我只能通过记录服务并使用用户凭据设置进程来实现此功能,如下所示.
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.FileName = CommandDetails.Command;
startInfo.WorkingDirectory = Settings.RoboCopyWorkingDirectory;
startInfo.Arguments = commandLine;
startInfo.UseShellExecute = false;
startInfo.CreateNoWindow = true;
startInfo.RedirectStandardError = true;
startInfo.RedirectStandardOutput = true;
// Credentials
startInfo.Domain = ImperDomain;
startInfo.UserName = ImperUsername;
startInfo.Password = ImperPasswordSecure;
process = Process.Start(startInfo);
Run Code Online (Sandbox Code Playgroud)
我的目标是不在域用户中使用服务日志,而是将域帐户密码重置为本地系统.
当我使用本地系统时,我得到Access被拒绝
任何想法如何实现这一目标?
StackTace
Access is denied
at System.Diagnostics.Process.StartWithCreateProcess(ProcessStartInfo startInfo)
at System.Diagnostics.Process.Start()
at System.Diagnostics.Process.Start(ProcessStartInfo startInfo)
at Ace.WindowsService.ProcessCmd.ProcessCommand.StartProcess(ProcessStartInfo startInfo) in
Run Code Online (Sandbox Code Playgroud)
我已经尝试将代码包装在下面列出的Impersonate代码中但没有成功.
冒充代码
public class Impersonation2 : IDisposable
{
private WindowsImpersonationContext _impersonatedUserContext;
// Declare signatures for Win32 LogonUser and …Run Code Online (Sandbox Code Playgroud) 我与一些SVN用户有一些问题,他们收到以下消息
访问'/ SVN/[repo name] /!svn/me'禁止访问
我有一些问题找出它的根本原因.
当前设置在Windows上使用Visual SVN.我们正在为用户使用SVN安全性,而不是AD.有些问题的用户是供应商(但不是全部),因此他们拥有与普通用户不同的权限.但奇怪的是,我使用Live会议影响了用户.他们尝试提交并获取上述消息.我从Tortoise SVN清除他们的凭据并使用我的,一切都很好.用户自己登录服务器并使用我的SVN用户信息.但它们与SVN用户和Windows用户之间没有联系.用户最初也能够提交新文件.我查看了SVN,我没有看到任何错误.有任何想法吗?无论如何要获得有关错误的更多信息.
我一直试图在win2008标准服务器上使用app fabric缓存.当我执行follwowing命令时,我得到:Import-Module DistributedCacheAdministration Import-Module:未加载指定的模块"DistributedCacheAdministration",因为在任何模块目录中找不到有效的模块文件.
该目录位于何处,如何使用该模块
此外,似乎我有PowerShell 1.我似乎无法安装PowerShell 2
我试图将旧的存储过程保存为字符串.当我使用以下内容时,我没有得到任何换行符.
SELECT @OldProcedure = Object_definition(object_id)
FROM sys.procedures
WHERE name = @ProcedureName
Run Code Online (Sandbox Code Playgroud)
有关如何使用换行符获取存储过程文本的任何建议?
我在考虑使用 sp_helptext
谢谢
更新
我正在复制并粘贴结果中的结果,这将显示一行.
至于脚本,因为我将结果存储在db字段中.我正在创建一个可以动态生成过程的工具,但我想创建它们的历史记录.
更新
原来,Object_definition做了我想要的,但出于某种原因,当我从结果中复制它时,我得到了一行.
Declare @sql varchar(max) ;
SELECT @sql=Object_definition(object_id)
FROM sys.procedures
WHERE name = 'Test_QueryBuilder';
drop procedure Test_QueryBuilder
exec( @sql)
print @sql
Run Code Online (Sandbox Code Playgroud) 我一直在尝试调试此错误:
System.IO.FileNotFoundException:无法加载文件或程序集"ClassLibrary1,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null"或其依赖项之一.该系统找不到指定的文件.文件名:'ClassLibrary1,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null'
我看到很多解决方案并尝试所有解决方案.
我正在查看Fusion Viewer,我收到以下消息:
日志:此绑定在默认加载上下文中启动.日志:使用应用程序配置文件:I:\ Projects\ACE Explorer\AceV_1Explorer\AceExplorer\AceExplorer\bin\Debug\AceExplorer.exe.config日志:使用主机配置文件:日志:使用来自C:\ Windows\Microsoft的计算机配置文件.NET\Framework64\v4.0.30319\CONFIG\machine.config中.日志:后策略引用:ClassLibrary1,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null LOG:GAC Lookup不成功.日志:尝试下载新的URL文件:/// I:/ Projects/ACE Explorer/AceV_1Explorer/AceExplorer/AceExplorer/bin/Debug/ClassLibrary1.DLL.日志:尝试下载新的URL文件:/// I:/ Projects/ACE Explorer/AceV_1Explorer/AceExplorer/AceExplorer/bin/Debug/ClassLibrary1/ClassLibrary1.DLL.日志:尝试下载新的URL文件:/// I:/ Projects/ACE Explorer/AceV_1Explorer/AceExplorer/AceExplorer/bin/Debug/ClassLibrary1.EXE.日志:尝试下载新的URL文件:/// I:/ Projects/ACE Explorer/AceV_1Explorer/AceExplorer/AceExplorer/bin/Debug/ClassLibrary1/ClassLibrary1.EXE.日志:所有探测URL都已尝试失败.
我看到目录中的文件,目标框架是4.0,所有使用x86
找出破碎的想法
更新 抱歉混乱.在日志中,它是PublicKeyToken = null.我正在尝试一切.
更新 我在主程序中添加了一些代码,它们将使用ResolveEventHandler解析程序集.它起初没有用.但是,当我让程序在程序的开头加载那些外部程序集(LoadReferences())时,它确实有效.很奇怪,因为当我在开始LoadReferences()中加载它们时路径完全相同,然后当方法输入对触发CurrentDomain_AssemblyResolve的自定义汇编的引用时.空白路径解析为装配路径.正如您所看到的,在LoadReferences()中,我正在添加EntityFramework,这将导致相同的问题,即使我正在使用Nuget.
在Main()中我添加了:
AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(CurrentDomain_AssemblyResolve);
LoadReferences();
private static void LoadReferences()
{
Assembly objExecutingAssemblies;
objExecutingAssemblies = Assembly.GetExecutingAssembly();
AssemblyName[] arrReferencedAssmbNames = objExecutingAssemblies.GetReferencedAssemblies();
Assembly asm;
foreach (AssemblyName strAssmbName in arrReferencedAssmbNames)
{
if (strAssmbName.FullName.ToLower().Contains("[company].") || …Run Code Online (Sandbox Code Playgroud) 我有一个转换器,我希望能够在设计模式下将值更改为 Visibility.Collapsed。没错,它忽略了 GetIsInDesignMode。
另外,我通过依赖注入(棱镜)绑定虚拟机
转换器:
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (DesignerProperties.GetIsInDesignMode(new DependencyObject()))
return Visibility.Collapsed;
if (value != null && value is AllowedSourceCode)
{
var allowedSourceCode = (AllowedSourceCode)value;
if (value == null)
return Visibility.Visible;
else if (allowedSourceCode.SupportedSourceCodes.Contains(allowedSourceCode.SelectedSourceCode))
{
return Visibility.Collapsed;
}
else
return Visibility.Visible;
}
return Visibility.Collapsed;
}
Run Code Online (Sandbox Code Playgroud)
看法:
<Canvas Visibility="{Binding SupportedSourceCodes,Converter={StaticResource AllowedSourcesConverter}}" Background="Gray" Opacity="0.9"
Grid.Row="0" Grid.Column="0" Grid.RowSpan="3" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Panel.ZIndex="5" >
Run Code Online (Sandbox Code Playgroud)
xaml.cs:
public ACARSubLedgerUC(ACARSubLedgerVM vm)
{
InitializeComponent();
DataContext = vm;
}
Run Code Online (Sandbox Code Playgroud) 我最近实现了CreateProcessAsUser.我一直试图将输出结果重定向或管道传输到文件.优先流.我试过这个没有运气
更新
要求是:
码:
public class CreateProcess
{
#region Constants
const UInt32 INFINITE = 0xFFFFFFFF;
const UInt32 WAIT_FAILED = 0xFFFFFFFF;
#endregion
#region ENUMS
[Flags]
public enum LogonType
{
LOGON32_LOGON_INTERACTIVE = 2,
LOGON32_LOGON_NETWORK = 3,
LOGON32_LOGON_BATCH = 4,
LOGON32_LOGON_SERVICE = 5,
LOGON32_LOGON_UNLOCK = 7,
LOGON32_LOGON_NETWORK_CLEARTEXT = 8,
LOGON32_LOGON_NEW_CREDENTIALS = 9
}
[Flags]
public enum LogonProvider
{
LOGON32_PROVIDER_DEFAULT = 0,
LOGON32_PROVIDER_WINNT35,
LOGON32_PROVIDER_WINNT40,
LOGON32_PROVIDER_WINNT50
}
#endregion
#region Structs
[StructLayout(LayoutKind.Sequential)]
public struct STARTUPINFO
{
public Int32 cb; …Run Code Online (Sandbox Code Playgroud) 我有一个C#程序,它检查特定目录是否存在.
它只是做:
Directory.Exists(path).
Run Code Online (Sandbox Code Playgroud)
我也试过其他方法.使用DirectoryInfo并使用AlphaFS
在我的本地计算机上,路径存在.当我在具有相同凭据的服务器上运行相同的程序时,它不存在.
我想知道这是否是一个群体政策问题.但我能够上升到一个水平并看到它.
\ server\volume\share\sub目录 - 远程不存在但在我的桌面上它确实是 \server\volume\share - 我的桌面和远程服务器上都存在
更新 我忘记提及,因为我可以访问我的桌面,所以我获得了ACL信息.没有一个小组能够翻译.
我真的只是想让这个应用程序以与服务器上相同的方式运行,并找出它的行为方式不同.
更新2 这些是物理服务器.我的桌面是Liquid VDI
以下是代码:
var path = txtPath.Text;
using (var user = new Impersonation(fuserdomain, fc_user, fc_pass))
{
var alphaExists = Alphaleonis.Win32.Filesystem.Directory.Exists(path);
var alphaDIExists = new Alphaleonis.Win32.Filesystem.DirectoryInfo(path).Exists;
var SystemExists = System.IO.Directory.Exists(path);
var SystemDIExists = new System.IO.DirectoryInfo(path).Exists;
var AlphaHasFiles = false;
var AlphaDIHasFiles = false;
var SystemHasFiles = false;
var SystemDIHasFiles = false;
try
{
Directory.GetFiles(path);
AlphaHasFiles = true;
} …Run Code Online (Sandbox Code Playgroud) 我已经看到了按列分组的示例,但是对于类.我正在尝试为EnumerableDataRowList执行此操作.但我得到"无效的匿名类型成员声明者."
EnumerableDataRowList<DataRow> enumerableRowCollection = new EnumerableDataRowList<DataRow>(reportData.Select("WeekKey <> '0'"));
var groupedRows1 = from row in enumerableRowCollection
group row by new {row["NETWORK"], row["Week"] };
Run Code Online (Sandbox Code Playgroud)
另外,我看到有些人在某些情况下将列组合起来得到相同的结果.这样做有什么好处
我有一个ac#winform项目,它在我的屏幕上显示与服务器有很大不同.
在我的屏幕上,我将部分表格切断,并在不同区域进行一些控制.我已经将我的分辨率调整到相同的分辨率,然后比服务器更强.两个人都没有工作.此外,尽管分辨率相同,但字体和控件在服务器上看起来更大
有任何想法吗?
服务器构建使用VS.net 2008与我的2010年.我不认为这应该重要.
c# ×8
windows ×2
appfabric ×1
c#-4.0 ×1
caching ×1
linq ×1
pinvoke ×1
powershell ×1
sql ×1
sql-server ×1
svn ×1
tortoisesvn ×1
visualsvn ×1
winforms ×1
wpf ×1